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

Macrophases

This page is part of the web mail archives of SRFI 93 from before July 7th, 2015. The new archives for SRFI 93 contain all messages, not just those from before July 7th, 2015.



I was wondering of the behaviour of the following is specified by the document.

(let ((x 1))
  (let-syntax
      ((foo (lambda (_)
              (let ((x 'whatever))
                (syntax x))))))
    (foo))

I believe both the Chez|MzScheme result (an error) or the SRFI-72 result (= 1) could be justified by the text:

"A reference to an identifier introduced into the output of a transformer refers to the closest enclosing binding for the introduced identifier",

since, for what it is worth, according to the point of view of SRFI-72, the (SYNTAX X) that appears after expanding the inner LET is not yet a reference but is viewed as quoted data. It only becomes the reference X after expanding (FOO) in the scope of the outer LET where X has the binding 1.

I do not have an objection against the Chex|MzScheme interpretation. I just think it would be good if the document could specify the behaviour either way.

Regards
Andre