Ouch! If true, I second this comment. Backward compatibility for write is pretty important. Consider the case of running an R5RS (or R7RS) program in an R7RS implementation to generate a file that will be consumed by an R5RS implementation.
There is no mention of this incompatibility in the section "Language changes since R5RS". Jonathan On Jul 1, 2012, at 12:36 AM, Marc Feeley wrote: > Formal Comment > > Submitter's name: Marc Feeley > Submitter's email: feeley at iro.umontreal.ca > Relevant draft: r7rs draft 6 > > Type: defect > Priority: major > Relevant section of draft: 6.13.3. Output > > Summary: Write procedure is not backwards compatible > > R7RS introduces a new output procedure called write-simple, which has > the same semantics as the R5RS write procedure. On the other hand, > the R7RS write procedure handles shared structures differently than > the R5RS. For example : > > (let ((x (list 1 2))) (write (list x x))) > > displays ((1 2) (1 2)) in an R5RS system > and displays (#0=(1 2) #0#) in an R7RS system > > To preserve backwards compatibility, it is the version of the write > procedure which uses datum labels which should have a different name. > In fact SRFI-38 has specified the name write-with-shared-structure for > this output procedure. This name should be maintained since it has > been implemented with that name in some Scheme systems. > > > _______________________________________________ > Scheme-reports mailing list > [email protected] > http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
