Todd <t.greenwoodg...@gmail.com> writes: > 3. alter ref2 to have a reference (pointer) to ref1 > > user=> (dosync (ref-set aref2 {:a aref1})) > {:a #<r...@98adae2: {:a #<r...@7b283052: {:a #<r...@98adae2: {:a > #<r...@7b283052: {:a #<r...@98adae2: {:a #<r...@7b283052: {:a > #<r...@98adae2: {:a #<r...@7b283052: {:a #<r...@98adae2: {:a > #<r...@7b283052: {:a #<r...@98adae2: {:a #<r...@7b283052: {:a > > <SNIP...> > > {:java.lang.StackOverflowError > > <SNIP...> > > 4. So, I've got a stack overflow... What's the proper way to deal with > this? Are circular references like this not allowed?
Circular references are allowed, the problem is with the repl trying to print them. You can set the *print-level* var to put a limit on how deep the printer will go. user> (set! *print-level* 8) 8 user> aref1 #<r...@64b37089: {:a #<r...@2f600492: {:a #<r...@64b37089: {:a #<r...@2f600492: {:a #}>}>}>}> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en