Skip to content

ignoring free identifiers list in sintactic closures

The following code is expected to output (12 2), and it does so in both MIT and Chibi schemes. But it Unsyntax 0.0.3.23-b7aa it outputs (2 2).

(import (scheme base)
        (scheme cxr)
        (scheme write)
        (srfi 211 syntactic-closures))

(define-syntax macro
  (sc-macro-transformer
   (lambda (form env)
     (let ((p1 (make-syntactic-closure env '() (cadr form)))
           (p2 (make-syntactic-closure env '(internal) (caddr form))))
       `(let ((internal 1))
          (list ,p1 ,p2))))))

(let ((internal 11))
  (display (macro (+ internal 1) (+ internal 1))))
(newline)