Allen's lambda syntax proposal
P T Withington
ptw at pobox.com
Mon Dec 1 08:47:32 PST 2008
On 2008-12-01, at 11:30EST, Mark S. Miller wrote:
> On Mon, Dec 1, 2008 at 7:31 AM, P T Withington <ptw at pobox.com> wrote:
>
>> On 2008-11-30, at 01:30EST, Brendan Eich wrote:
>>
>> // Instead of lambda (a, b, c) { ... }, why not:
>>> { |a, b, c| ... } ?
>>>
>>
>> I would rather have a more literate syntax, lest we degenerate to
>> where
>> practically any comic book blasphemy is a valid program.
>>
>> (BTW, I'm pretty sure I have that same Byte issue, in a similar
>> box, with a
>> similar musty smell, _and_ "the blue book". Back then, worrying
>> that 'line
>> noise' or the death throes of your modem hanging up would write
>> code for you
>> was a legitimate concern. Today, it is just my old eyes that might
>> gloss
>> over `{||` and wonder why the `var`s in that block are not visible
>> in the
>> enclosing function...)
>>
>
> Since it's a lambda, the 'var's will be visible in the enclosing
> function.
Eh? So:
function () {
var foo = 42;
{|| var foo = 3; }
return foo;
}
and:
function () {
var foo = 42;
{ var foo = 3; }
return foo;
}
Give the same answer?
> The point of having a very compact syntax for lambda is too make it
> pleasant
> to write control abstractions, as one does casually in Smalltalk.
> With the
> verbose "lambda" spelling, people will avoid those, or invent macro
> systems
> (as Scheme programmers do) mostly so they can avoid seeing all those
> extra
> "lambda" letters in the code.
>
> Think of lambdas as blocks plus a bit more, rather than function
> minus a
> bit. Viewed this way, their block-like syntax is a virtue.
I agree with the goal of compactness. I just don't like it to be too
compact. Call me a curmudgeon. I don't like that `not` is spelt `!`
or that it is so easy to make a one-letter misspelling of `eql` and
end up with `setq` either.
More information about the Es-discuss
mailing list