[racket-dev] literal strings and numbers are now interned

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Tue Nov 22 14:50:43 EST 2011

At Tue, 22 Nov 2011 09:18:30 -0700, Matthew Flatt wrote:
> Along the same lines, I think it's unlikely that good programs are
> affected by the `read' interning change

Some Scribble tests failed in DrDr, because the Scribble reader
actually promises a distinct "\n" for literal newlines. There's no way
to make that work with syntax objects, since `datum->syntax' now always
interns strings.

Any objection to removing that feature of the Scribble reader? 

The idea of a specific "\n" isn't compatible with separate compilation,
even prior to v5.2.0.4, in the sense that

                      a.rkt 
                      -----
 #lang at-exp racket
 (provide is-source-newline?)
 (define nl '@{
              })
 (define (is-source-newline? v) (eq? (first nl) v))

                      b.rkt 
                      -----
 #lang at-exp racket
 (require "a.rkt")
 (define nl '@{
              })
 (is-source-newline? (first nl))

produces different results depending on whether "b.rkt" is run from
bytecode or from source.



Posted on the dev mailing list.