[racket] Reading Graph Structure: read: #..= expressions not allowed in read-syntax mode (??)

From: Marijn (hkBst at gentoo.org)
Date: Mon Jun 6 10:30:39 EDT 2011

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 06/06/11 15:14, Eli Barzilay wrote:
> 20 minutes ago, Marijn wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Hi,
>>
>> why does the following code
>>
>>
>> #lang racket
>>
>> (struct _dl (left val right))
>>
>> (define (dlist a b c)
>>   #1=(_dl #f a #2=(_dl #1# b (_dl #2# c #f))) )
> 
> Note that you wrote an infinite piece of code there, which very few
> implementations would allow you to do.  (It used to be a cute trick in
> the distant past.)  I've tried a few implementations, and they fail in
> a much less graceful way: some schemes just got stuck in an infinite
> loop, and some lisps threw a stack overflow error.

My understanding is that it is a finite data structure that refers to
itself. It is supposed to represent 3 nodes/links of a doubly linked
list where each node points to its neighbours or #f, so really it should
only be 3 _dl's big...

Alternatives are to use a letrec with `delay' on `left and `right'
members, but then a new accessor that wraps `force' will have to be used
everywhere.
Finally, mutation can be used to connect links together in the desired
way. Maybe I'm trying too hard to avoid this simple fix?

Thanks,

Marijn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3s5I8ACgkQp/VmCx0OL2xk2wCfVbQuXXg0/zJTwuoPmeu3LL0X
4bMAoJSfaNmSQp9p2kXE8IWxLzoWtpSP
=N7g8
-----END PGP SIGNATURE-----


Posted on the users mailing list.