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

Re: Various comments



dyb@xxxxxxxxxxxxxx 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.

> [...]
>
> whereas variable transformers allow one to define what happens with
> "ordinary" assignments of the form
>
>   (set! id e)
>
> This can be used, for example, to allow method bodies in an OOP system to
> access instance variables as if they were ordinary variables, by
> transforming references into the appropriate instance access operations
> and assignments into the appropriate instance mutation operations.

Ditto here, this extension serves mostly to obscure code. It is
not much of a problem to write (set! (id) e) or even (set! (class
id) e), and be explicit in what you're doing here (using SRFI-17
or something similar).


I don't think saving two parens is worth the complexity and the
obscurity these features add.

Regards,
        -- Jorgen

-- 
((email . "forcer@xxxxxxxxx") (www . "http://www.forcix.cx/";)
 (gpg   . "1024D/028AF63C")   (irc . "nick forcer on IRCnet"))