[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #57833] letrec-syntax is broken

From: Arthur A. Gleckler
Subject: [bug #57833] letrec-syntax is broken
Date: Sun, 16 Feb 2020 14:14:58 -0500 (EST)
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36


                 Summary: letrec-syntax is broken
                 Project: MIT/GNU Scheme
            Submitted by: aag
            Submitted on: Sun 16 Feb 2020 07:14:57 PM UTC
                Category: runtime
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Incorrect behavior
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any



letrec-syntax is now broken:

1 ]=> (define-syntax foo
  (syntax-rules ()
    ((_ xy)
         ((bar1 (syntax-rules ()
                  ((_ (else* destination))
          (bar2 (syntax-rules ()
                  ((_ z)
                   (bar1 z)))))
       (bar2 xy)))))

;Value: foo

1 ]=> (pp (lambda () (foo (else* start))))
(lambda ()
  (bar1 (else* start)))
;Unspecified return value

1 ]=>

Under 9.2.1 the answer was:

(lambda ()

Splitting the define-syntax form into three separate definitions solves this
specific problem, but there seem to be other problems, too, with unbound
references.  I haven't yet managed to distill that into a reproducible test
case, though.  I hope it's just another manifestion of the same bug.

This is the bug that appeared after #57793 was fixed.


Reply to this item at:


  Message sent via Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]