[plt-scheme] Semantics of quote

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Jun 24 01:01:42 EDT 2008

On Jun 23, Robby Findler wrote:
> (list +) is fine.

If it's

  '(+)

then how is this different than (list '+); and if it's

  '(#<procedure:+>)

then the quote is meaningless as a consructor (eg, you can't copy the
result as an expression) and you'll also want

  '#<procedure:+>

which quickly turns it into a character displayed in front of all
values, which makes little sense.

(This is just what Carl said: with the teaching languages you can
actually print stuff in a way that can be evaluated back.)


> In general, there are exactly as many unprintable values as there
> were before, I believe (or at least there should be
> ...).

Obviously.  Same as any output prefix.


> Pretty-printing also seems okay, but I'm not sure where you're going
> with that one.

Assuming a narrow screen, how does (list 'define 'define 'define)
print:

  '(define
    define
    define)

or

  '(define define
     define)

IMO, if you add quote, you should go for the first option or better
not use pretty printing.  The contradicting goals are quote trying to
make results look like values and pretty-printing makes them look like
code.


> On Mon, Jun 23, 2008 at 11:20 PM, Eli Barzilay <eli at barzilay.org> wrote:
> > On Jun 23, Matthias Felleisen wrote:
> >>
> >> On Jun 23, 2008, at 7:24 PM, Robby Findler wrote:
> >>
> >> > While what Carl says is true, I believe the spirit of the question is
> >> > more like "why isn't constructor (or quasiquote) printing the default
> >> > for the 'scheme' and related languages"?
> >> >
> >> > To which I say "I have suggested this myself! :)"
> >>
> >> By all means, go for it!
> >
> > -1 -- since this runs into a bunch of messes like not going well with
> > pretty printing, or unprintable values like (list +)...
> > --
> >          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
> >                  http://www.barzilay.org/                 Maze is Life!
> >
> >

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!


Posted on the users mailing list.