
On 6/10/2015, at 10:16 pm, Kosyrev Serge <_deepfire@feelingofgreen.ru> wrote:
As an example of the opposite end, consider Common Lisp, which:
1. reifies READ as the third processing phase (macroexpansion[1] and actual compilation being the other two) 2. operates at expression granularity 3. makes the full power of the language available to support the decision process of what subexpressions are available in which contexts
Except that the syntax for conditional reading in Common Lisp, #+ <feature> <datum> #- <feature> <datum> (a) is utterly different from conditional evaluation, like (if <expr> <expr> <expr>). (b) does NOT make the full power of the language available. The feature test is a Boolean combination, using and, or, not of atoms, where the value of an atom is true iff it is a member of *features* (the asterisks are part of the name).