Allen's lambda syntax proposal
Yuh-Ruey Chen
maian330 at gmail.com
Wed Dec 3 14:14:12 PST 2008
Yuh-Ruey Chen wrote:
> Brendan Eich wrote:
>> C# uses (a, b, c) => ... but in JS the comma operator makes that
>> nasty to parse top-down. I think the only candidates have to be of
>> the form
>>
>> ^(a, b, c) {...}
>>
>> (^ could be another character, but it seems to beat \ as others have
>> noted), or else the Smalltalky
>>
>> { |a, b, c| ... }
>>
>> At this point we need a bake-off, or a convincing argument against
>> the unusual vertical bar usage.
>
> Here's a possible technical issue that might not apply to ES: Ruby
> blocks params can't have default arguments according to
> http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9#l9 :
>
> The new syntax allows to specify default values for block
> arguments, since
>
> {|a,b=1| ... }
>
>
> is said to be impossible with Ruby's current LALR(1) parser, built
> with bison.
>
That Ruby 1.9 page also lists yet another possible syntax:
->(a, b, ...) {...}
Using Maciej's examples:
if_ (->{x < 3}, ->{
handleSmallNum(x);
}, ->{
handleLargeNum(x);
});
while_ (->{x != null}, ->{
x.process();
x = x.next();
});
for_ (->{var i = 1}, ->{i < 10}, ->{i++}, ->{
total += vec[i];
});
forIn_ (obj, ->(prop) {
props.push(prop);
});
arr.sort(->(a, b) { a*a < b*b });
arr.map(->(x) { x * (x-1)});
function doubleBs(str) {
str.replace(/b*/, ->(substr) { substr + substr });
}
The control abstractions just don't look right, regardless of which
lambda syntax we choose. I'd rather wait for a more powerful macro
system, instead of choosing the syntax based off how it would look in
control abstractions.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20081203/91d599f9/attachment-0001.html>
More information about the Es-discuss
mailing list