# Self-recursion and arrow functions

Allen Wirfs-Brock allen at wirfs-brock.com
Sun Mar 17 11:24:02 PDT 2013

```I don't think anybody has yet exploited the power of parameter default values for defining recursive functions:

((fact=n=>n>1 ?n*fact(n-1):1)=>(fact))()

Allen

On Mar 17, 2013, at 7:39 AM, Axel Rauschmayer wrote:

> ;-)
>
>
> function defineRec(f) {
>     return args => f(f, ...args);
> }
>
> let factorial = defineRec((me, n) => n <= 1 ? 1 :  n * me(me, n-1))
>
>
> On Mar 17, 2013, at 14:33 , "Mark S. Miller" <erights at google.com> 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. 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.
>>
>> Ok, and now back to our irregularly scheduled humor...
>>
>>
>>
>>
>> On Sun, Mar 17, 2013 at 6:19 AM, Kevin Smith <khs4473 at gmail.com> wrote:
>>
>>
>> Sorry arrow functions but this isn't a better JS.
>>
>> Bah.  Arrow functions are a huge usability win for JS.  Try them- you'll see!
>>
>> { Kevin }
>>
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>>
>>
>> --
>>     Cheers,
>>     --MarkM
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>
> --
> Dr. Axel Rauschmayer
> axel at rauschma.de
>
> home: rauschma.de
> blog: 2ality.com
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20130317/81de64e4/attachment.html>
```