Re: printing recursive objects?

"John Lacey" <>
Tue, 4 May 1993 06:46:40 GMT

          From comp.compilers

Related articles
printing recursive objects? (Paul Haahr) (1993-05-03)
Re: printing recursive objects? (John Lacey) (1993-05-04)
printing recursive objects? ontos! (Tony Kanawati) (1993-05-04)
printing recursive objects? (1993-05-05)
| List of all articles for this month |

Newsgroups: comp.compilers
From: "John Lacey" <>
Keywords: Lisp
Organization: Computer Science, Indiana University
References: 93-05-014
Date: Tue, 4 May 1993 06:46:40 GMT

Paul Haahr <> writes:

> For example, given the scheme expression
> (let ((x (cons 'a nil))) (set-cdr! x x) x)
> how do I print some scheme expression that, when interpreted,
> creates the same structure, rather than just a lot of ``a''s?

Chez Scheme has a parameter called print-graph. When enabled, write prints
objects in a notation which may be read in later. (Of course, this
requires the cooperation of read, as well.)

The notation is that the first occurence of a duplicated object is written
as `#n=object', and subsequent occurences of the object are written as
`#n#'. Your example would be printed as `#0=(a . #0#)'.

Of course a simple table lookup will suffice to detect duplicated objects.
I don't, unfortunately, have any references, or knowledge of more
complicated algorithms, if such exist. (The description in the Chez System
Manual is no more detailed than that the above.)

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.