[plt-scheme] about letrec and continuation : which behavior is correct ? and why ?
On Aug 19, 2008, at 8:19 AM, Matthias Felleisen wrote:
> I assume w/ "incorrect" you mean "is not a legal program".
Correct.
> It never ceases to amaze me that the Report specifies that some
> syntactically legal expressions are NOT programs but you can only
> find out (as far as I know) that they are NOT programs by RUNNING
> them. (Of course all this means is that compilers and interpreters
> accept and deal with 'things' that are not legal programs in the
> spirit of a report, though I can't think of another language with
> this property.)
It goes by the same spirit in which the Report specifies that
some S-expressions (a.k.a. datum) are NOT syntactically legal
(as programs) but you can only find out that they are NOT
syntactically legal by EXPANDING* them. Scheme is not unique
in this aspect (e.g., C++ can only be syntactically verified
by expanding the templates).
Aziz,,,
[*] expanding a program means running it through the expander
which is a sort-of evaluator whose input is an S-expression
with a suitable environment and whose output is a syntactically
legal expanded program.