On Sep 12, 2011, at 12:51 AM, Peter van der Zee wrote:

> On Mon, Sep 12, 2011 at 1:04 AM, Brendan Eich <[email protected]> wrote:
>> Type Inference can do a lot. See http://doctorjs.org/.
>> 
>> We do not want people adding guards all over their code, IMHO. Anyway, we 
>> don't know have guards ES6.
> 
> While true, I've found that you can't really overcome the dynamic
> property access unless you can somehow infer that you're operating on
> an array of some fixed type or something like that.

Have you tried pasting code into DoctorJS? It infers monomorphic array types, 
parameter types, return types. It's a global analysis.

For example, on SunSpider's crypto-aes.js, DoctorJS figures out that

13: Cipher : function(Array[number], Array[Array[number]]) → Array[number]

given

function Cipher(input, w) {    // main Cipher function [§5.1]
 ...
}

Neat, eh?

Yes, eval and other dynamic code loading facilities require re-analysis. So a 
tool will have to use hybrid or JIT techniques. Still doable.


> And function calls
> and result types are actually far more difficult (though not
> completely impossible)

The difficulty is a challenge to the IDE implementor, not to all JS hackers to 
annotate their function signatures.

With Flash and AS3, developers over-rotated and annotated everything. Of course 
AS3 lacks inference of even a local or inside-function-only kind. But really, 
the IDE developers can take one for the team, IMHO.

/be


> to do in es than in a strongly typed language.
> Although I don't really see any clear way of getting around this,
> without some kind of annotation (be it in the language or in
> comments).
> 
> - peter

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

Reply via email to