From: Peter Norvig
Subject: Re: Returning Functions
Date: 
Message-ID: <61bjf3$h13@shellx.best.com>
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