Yes, the printer oversimplifies in that sense. It simplifies in the obvious way of not printing lexical context, but it turns out that it also simplifies by neglecting the difference between a plain list and a sequence of pairs that ends in a syntax-object list.
At Fri, 15 Aug 2014 13:03:27 +0400, Roman Klochkov wrote: > I thought, that #'(1 . (2)) == #'(1 2) as '(1 . (2)) == '(1 2) > > And Racket printer thinks same: > > > #'(1 . (2)) > #<syntax:19:4 (1 2)> > Fri, 15 Aug 2014 07:13:39 +0100 от Matthew Flatt <[email protected]>: > >At Fri, 15 Aug 2014 09:55:11 +0400, Roman Klochkov wrote: > >> What is the difference? > >> > >> > (let ([stx #'(1 (+ 3 4) 5 6)]) (equal? (syntax->list stx) (syntax-e > >> > stx))) > >> #t Or syntax->list == (lambda (x) (let ([res (syntax-e x)]) (if (list? x) > >> x > >> #f))) ? > > > >You need a `.` to expose the difference: > > > > > (syntax-e #'(1 . (2))) > > '(#<syntax::35 1> . #<syntax::39 (2)>) > > > > > (syntax->list #'(1 . (2))) > > '(#<syntax::62 1> #<syntax::67 2>) > > > > > -- > Roman Klochkov > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

