Like letrec, but when an expr next to an id
is a cons, list, vector, quasiquoted
expression, or make-structid from a
define-struct, the expr can refer directly to any
id, not just ids defined earlier. Thus,
shared can be used to create cyclic data structures.