Jamie Zawinski wrote:
> I think the near-impossibility of explaining that mess to a novice is
> the best of all possible arguments against defining lambda as a macro.
>
> == Jamie (I mean, you're only saving two characters...)
The #' is only two characters, but #'(lambda ()) is 13 charcaters, which
is too much, in my opinion. In Smalltalk, a closure of no arguments
requires only two characters, []. This allows the basic control structures
to be functions instead of macros or special forms. For example:
test-expression ifTrue: [ then-part ] else: [ else-part ]
Now you can argue about having an infix ifTrue versus a prefix if, but it
certainly is nice to be able to use closures in such a succint way. If
Lisp had this, then if, case, cond, unwind-protect, loop-while, dolist,
dotimes, with-input-from-file, and other control structures could be
functions rather than macros, which I think would be a good thing.
-Peter Norvig