On 2 Jul 2011 on <scheme-reports>, Per Bothner wrote:
What is the thinking as to how quasiquote interacts with self-referential data structures? Does anyone have an algorithm to translate these?
Is this valid? Should it be?
`#0=(,x #0#)One could translate this into:
(let ((tmp (cons x #f))) (set-cdr! tmp tmp) tmp)Still, a general algorithm doesn't look exactly trivial, and I haven't seen a published algorithm that does this. Bonus points for an algorithm that tries to re-use the reader objects when possible (i.e. that avoids needless copying).
WG1 voted to add a note explaining that reader label cycles are not allowed within quasiquote.