Ah, global getter. Didn’t think of that. On Nov 28, 2012, at 22:47 , Brendan Eich <[email protected]> wrote:
> 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 > -- Dr. Axel Rauschmayer [email protected] home: rauschma.de twitter: twitter.com/rauschma blog: 2ality.com
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

