Does this apply? http://lists.racket-lang.org/dev/archive/2012-March/009205.html
On Sunday, May 13, 2012, Jens Axel Søgaard wrote: > Hi All, > > I am playing around with the paren-shape syntax property > in order to use {} for polynomials. > > The case {+ p q r ...} is causing me problems. > > I have reduced the problem to the example below. > > I'd like {+ 2 3 5} to expand to (* (* 2 3) 5) and thus evaluate to 30. > However as is {+ 2 3 5} expands to (#%app + (#%app * '2 '3) '5) > which gives 11. > > What have I missed? > > /Jens Axel > > > #lang racket > > (module huh racket > (provide (rename-out [app #%app])) > > (define-for-syntax (curlify stx) > (syntax-property stx 'paren-shape #\{)) > > (define-for-syntax (curly? stx) > (let ([p (syntax-property stx 'paren-shape)]) > (and p (eqv? p #\{)))) > > (define-syntax (app stx) > (syntax-case stx (+) > [{_ + p q} > (curly? stx) > (syntax/loc stx (* p q))] > [{_ + p q r ...} > (curly? stx) > (curlify #'{app + (* p q) r ...})] > [(_ . more) > (syntax/loc stx (#%app . more))]))) > > (require 'huh) > {+ 2 3 5} > ____________________ > Racket Users list: > http://lists.racket-lang.org/users >
____________________ Racket Users list: http://lists.racket-lang.org/users