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.
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"))