[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Is BEGIN primitive?
Whether you think BEGIN must be a primitive expression depends on your
cultural heritage. If you have grown up believing that syntax is fully
checked before macro expansion, then (BEGIN X Y ...) ==>
((LAMBDA () X Y ...)) works fine. If you have grown up believing that
macros do the least amount of syntax checking they can get away with
(or less), then (BEGIN (DEFINE ...) ...) ==> ((LAMBDA () (DEFINE ...) ...))
does not detect the syntax error.
I like the term "derived expression" because it expresses the fact that
the semantics of BEGIN can be expressed in terms of primitive expressions
without implying that a macro mechanism is used.
Though the word "statement" ought to signify a declarative assertion,
the American programming language community long ago corrupted it to
signify a command. I prefer the English "command", but I prefer even
"statement" to the phrase "expression evaluated solely for effect".
Peace, Will