Re: [Scheme-reports] Module-level BEGIN is not a BEGIN - please call it something else
Andre van Tonder 24 Apr 2011 17:57 UTC
On Sun, 24 Apr 2011, John Cowan wrote:
> Andre van Tonder scripsit:
>
>> It cannot be replaced by the sequence it encloses as in all other
>> instances of BEGIN.
>
> Not all BEGINs can be removed in this way: (if (p) (begin (a) (b)) (c))
> cannot be rewritten as (if (p) (a) (b) (c)), for example. BEGIN is
> already very overloaded, but the concept is the same.
Granted, but nowhere else does BEGIN introduce a new lexical scope.
>> In fact, the outer BEGIN is bound (part of the module language) while
>> the inner BEGIN is unbound (since the base library is not imported).
>
> In fact, there is no concept of binding in the module language, which is
> not Scheme.
Okay, but still, in the example
(module (foo)
(begin (begin 1)))
the outer BEGIN has a meaning and the inner begin is unbound and therefore
has no meaning.
So I guess my biggest problem with this overloading is that module
BEGIN does not just indicate a sequence, but also delimits a lexical
scope. This makes it morally very different form all the other BEGINs,
which never delimit a new lexical scope.
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports