Can we have Function.isPure(f)

Irakli Gozalishvili rfobic at gmail.com
Mon Nov 5 11:52:10 PST 2012


Hi,  

I keep running into cases where I would like to know if function is pure. Although my interpretation of pure is not quite right but I don't know any better name. By pure in this context I would refer to functions that don't access an out scope variables and don't
do any mutations of itself or it's properties no references to itself could be an option too. My intended use case for such a feature is to allow transfer (by which I meant just coping) of such functions across workers / processes. For example in Mozilla add-on  
we have a context-menu API https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/context-menu.html
which has limited declarative syntax for context definitions where specific context item should appear. There is also programable API through content-script files where one could write a predicate function that is invoked in the page scope with a node reference on which event has occurred. In most though pure function would have being enough but there is no way for us to know weather given function refers to outer scope variables. Same use cases arise with web workers and node processes too, it would be great if we had something like Function.isPure(f). Also as far as I know jits already capture this info for optimisation purposes maybe it could be exposed ? Another alternative could be pure(function() { ….  }) that would throw compile error if
function followed is not pure.

Thanks!
--
Irakli Gozalishvili
Web: http://www.jeditoolkit.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121105/37b2995d/attachment.html>


More information about the es-discuss mailing list