cisco / ChezScheme

Chez Scheme
Apache License 2.0
6.91k stars 982 forks source link

Error in tspl for make-variable-transformer #721

Open gwatt opened 9 months ago

gwatt commented 9 months ago

https://scheme.com/tspl4/syntax.html#./syntax:s42

The given example is missing set! in the syntax-case literal list:

(let ([ls (list 0)])
  (define-syntax a
    (make-variable-transformer
      (lambda (x)
        (syntax-case x ()
          [id (identifier? #'id) #'(car ls)]
          [(set! _ e) #'(set-car! ls e)]
          [(_ e ...) #'((car ls) e ...)]))))
  (let ([before a])
    (set! a 1)
    (list before a ls))) ⇒ (0 1 (1))

As-is, any form like (a _ _) will result in a set! form.