[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