-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Thanks Matthias,
On 06/09/11 16:34, Matthias Felleisen wrote: > > (1) To create cyclic structs you need mutability in our world. [gensym is 0 > assignments, cyclic structs is 1 assignment, and state is N assignments.] > > (2) I think the failure should come earlier when a struct isn't mutable. If > you agree, you can try to request a feature change. I agree and would be happy if this behavior was changed. So any idea as to why my custom-write doesn't work correctly? AFAICT the code should work, so either I screwed up or misunderstood something or this is a bug. > #lang racket > > ;;; link structure > (struct _dl (left val right) #:mutable > #:property prop:custom-write > (lambda (dl p write?) > (let ((print (if write? write display))) > (display #\() > (let loop ((dl dl)) > (print (_dl-val dl)) > (let ((right (_dl-right dl))) > (if right (begin (display " ")(loop right)) > (display #\)) ))))) ) > > (define (dlist a b c) > (shared ((middle (_dl left b right)) > (left (_dl #false a middle)) > (right (_dl middle c #false))) > middle) ) > > (dlist 1 2 3) > > (display (dlist 1 2 3)) > > > Outputs: > > > (2 3)(2 3)(2 3) > (2 3)(2 3) Expected output (something more like): '(2 3) (2 3) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk3w6BwACgkQp/VmCx0OL2yqqgCaAlFw2wR4dZ+Ew9aaP0p1e3xc mV8An1IGqd1p++7YR8iTwEqUNSS3ujN1 =+HIb -----END PGP SIGNATURE----- _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users