At Sat, 24 Jun 2006 17:38:09 +0200, Jorgen Schaefer wrote:
> xxxxxx@cs.indiana.edu writes:
>
> >> Section 3 mentions "singleton identifiers" as a possible form for
> >> syntax abstractions, and refers to section 3.6 for more information. I
> >> couldn't find this in 3.6.
> >
> > This should probably have been a reference to Section 3.4, which mentions
> > what happens when a keyword appears in ``any other definition or
> > expression context,'' i.e., not in the first position of a list-structured
> > input form.
>
> So (+ 2 two) could very well cause a side effect, if TWO is
> syntax.
>
> I have a serious problem with this. It makes understanding
> programs more confusing. So far, in Scheme, I know that (foo ...)
> is a form that does something, and to find out what it does, I
> need to know what FOO does. If something does not show up at the
> first position in a list, it's a variable reference (or, very
> rarely, a specific syntactic keyword similar to ELSE; but this
> only within the appropriate macro).
>
> This feature means _any_ symbol could cause _anything_ to happen.
>
> This makes programs much more difficult to understand, and this
> for the sole reason of saving one to write two parens. I don't
> think this is worth it.
Seems like a pretty abstract argument, esp. when this seems to be
common practice and without it, one cannot implement classes or units
as macros.
Robby