Named Arrow Functions

Isiah Meadows isiahmeadows at gmail.com
Thu Aug 13 02:14:13 UTC 2015


Oops... Used to Node world. I didn't really test it, since I replied by
phone.

On Wed, Aug 12, 2015, 10:46 Salvador de la Puente González <
salva at unoyunodiez.com> wrote:

> AFAIK, this wont work because what clearTimeout() is actually expecting is
> the id returned by setTimeout().
> El 12/8/2015 16:00, "Nick Krempel" <ndkrempel at google.com> escribió:
>
>> On 12 August 2015 at 02:56, Isiah Meadows <isiahmeadows at gmail.com> wrote:
>>
>>> ```js
>>>
>>> let p = new Promise((resolve, reject) =>
>>>   setTimeout((x => () => x(x))(handler => {
>>>     onNotNeeded(() => clearTimeout(handler));
>>>
>>>     // `return` is to take advantage of TCO
>>>     return doSomethingAsync(err => {
>>>       if (err != null) return reject(err)
>>>       else return resolve();
>>>     });
>>>   }));
>>> ```
>>>
>> This doesn't work as the function passed to clearTimeout does not === the
>> function passed to setTimeout.
>>
>> In fact, they're not even behaviorally equal as the function passed to
>> setTimeout is expecting no parameters and the function passed to
>> clearTimeout is expecting one parameter - i.e. this is not even correct in
>> lambda calculus.
>>
>> A lambda-calculus-correct version could be:
>>
>> ```
>> setTimeout((x=>(y=>()=>x(y(y)))(y=>()=>x(y(y))))(handler => {...}));
>> ```
>>
>> But this would still suffer from the object identity problem mentioned
>> above. A final JS-correct version could be:
>>
>> ```
>> setTimeout((x => {const y = () => x(y); return y;})(handler => {...}));
>> ```
>>
>> Nick
>>
>>
>> _______________________________________________
>> 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/20150813/8040e8f4/attachment.html>


More information about the es-discuss mailing list