Axel Rauschmayer wrote:
Would returning NaN be impure (apart from running the risk of it having been changed to something different, globally)?

You can't say "apart from...", that's exactly the risk. It could be replaced with a global getter that has effects.

Isolating a pure function to a sandbox or prepared global environment saves this, but then the function's "pure" annotation can't be enough to express what's required.

/be

On Nov 28, 2012, at 21:35 , Oliver Hunt <[email protected] <mailto:[email protected]>> wrote:


On Nov 28, 2012, at 12:25 PM, Waldemar Horwat <[email protected] <mailto:[email protected]>> wrote:

On Wed, Nov 28, 2012 at 5:39 AM, Marius Gundersen <[email protected] <mailto:[email protected]>> wrote:

    On Wed, Nov 28, 2012 at 1:20 PM, Andreas Rossberg
    <[email protected] <mailto:[email protected]>> 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;
}




_______________________________________________
es-discuss mailing list
[email protected] <mailto:[email protected]>
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[email protected] <mailto:[email protected]>
https://mail.mozilla.org/listinfo/es-discuss

--
Dr. Axel Rauschmayer
[email protected] <mailto:[email protected]>

home: rauschma.de <http://rauschma.de>
twitter: twitter.com/rauschma <http://twitter.com/rauschma>
blog: 2ality.com <http://2ality.com>

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to