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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss