Pure functions in EcmaScript

David Bruant bruant.d at gmail.com
Wed Nov 28 13:11:35 PST 2012


Le 28/11/2012 21:35, Oliver Hunt a écrit :
>
> On Nov 28, 2012, at 12:25 PM, Waldemar Horwat <waldemar at google.com 
> <mailto:waldemar at google.com>> wrote:
>
>> On Wed, Nov 28, 2012 at 5:39 AM, Marius Gundersen 
>> <gundersen at gmail.com <mailto:gundersen at gmail.com>> wrote:
>>
>>     On Wed, Nov 28, 2012 at 1:20 PM, Andreas Rossberg
>>     <rossberg at google.com <mailto:rossberg at google.com>> wrote:
>>
>>         Second, due to the extremely impure nature of JavaScript,
>>         there aren't
>>         many useful pure functions you could even write. For example,
>>         your
>>         'sum' function is not pure, because the implicit conversions
>>         required
>>         by + can cause arbitrary side effects.
>>
>>
>>     Functions passed to the array methods map, reduce, filter, etc
>>     would be good candidates for pure/side-effect-free functions.
>>     These functions shouldn't alter any state; they should only
>>     return a new value based on the parameter they were sent.
>>
>>
>> You haven't addressed Andreas's point: Almost any function you write 
>> is nonpure, including your sum example. As a fun exercise, go ahead 
>> and write a pure version of your sum example.
>>
>>     Waldemar
> Here you go:
>
> function sum(a, b) {
>    var undefined;
>    switch (typeof a) {
>    case "number":
>    case "string":
>        break;
>    default:
>        return +undefined;
>    }
> switch (typeof b) {
>    case "number":
>    case "string":
>        break;
>    default:
>        return +undefined;
>    }
>    return a + b;
> }
I don't even... Reading this makes me understand why "return a+b" didn't 
work and... oh well... JavaScript is quite a language...

David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121128/bd56e744/attachment.html>


More information about the es-discuss mailing list