On 17/03/2013, at 14:33, Mark S. Miller wrote:

> Just in case anyone does not realize that this thread is humorous, 
> 
>     const factorial = n => n>1 ? n*factorial(n-1) : 1;
> 
> Yes, you can't use this as an expression. So what? After this declaration you 
> can use factorial as an expression.

IIRC the possibility of *simply* using 'ƒ' (instead of 'function') for lambdas, 
which is a syntax that's immediately familiar to any JS developer:

[1,2,3,4,5,6].map(ƒ factorial(n) { n>1 ? n*factorial(n-1) : 1 });

and could also give us anonymous and named lambdas that can be used à la 
'function' function:

A lambda declaration: ƒ factorial(n) { n>1 ? n*factorial(n-1) : 1 }

A named lambda expression: (ƒ factorial(n) n>1 ? n*factorial(n-1) : 1)(5);

Anonymous lambdas:

[1,2,3,4,5,6].map(ƒ(n) n*2);  //ƒ lambdas are even shorter than arrow functions
[1,2,3,4,5,6].map((n)=> n*2);

was being considered in the past, but we ended up with arrows instead. I for 
one liked ƒs much more than arrows because ƒ()... looks like a function much 
more than the grawlixy ()=>...

Now, given that ƒs could be created named or anonymous and used as expressions 
in any case, with ease, just like the regular functions can, perhaps ƒ-lambdas 
may deserve a reconsideration?

> Anonymous lambda expressions are a wonderful things. But in actual 
> development, I have never yet encountered a recursive function I didn't want 
> to name.

But Brandon Benvie was pointing out at the problem: "Relying on the defined 
name they're assigned to suffers from the "can be redefined" problem":

var factorial= (n)=> n>1 ? n*factorial(n-1) : 1;

The factorial lambda above depends on a free var to function properly which is 
a hazard.

It never ocurred to me that using const instead of var/let as you've done above 
fixes that, thank you!

Still, ƒ named lambdas have the advantage that can be used directly as 
expressions, without going through any const roundabouts.

> Ok, and now back to our irregularly scheduled humor...


-- 
(Jorge)();

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to