On Jun 2, 2012, at 23:14, Brendan Eich <[email protected]> wrote:

> Angus Croll wrote:
>> To my mind (2) is the actual problem. To quote Yehuda "the proposed 
>> semantics interfere with more intentional uses of `call` and `apply`."
> 
>  Users of call and apply who need to override |this| have as their contract 
> that any funarg they take has dynamic |this|.
> 

Yes of course, can't argue with that logic, or your earlier explanation of why 
modern engines can't be expected  to have call/apply modify a hard binding.

But that's exactly why we should be conservative about locking users into hard 
bindings when their intentions are not clear (clear: 'bind' or no |this| value, 
unclear: arrow functions). As someone who views call/apply as cornerstones of 
the language and who's libraries depend on it, an unintended hard binding is a 
needlessly broken utility. But I repeat myself.

> 
> So are you looking for an isBound predicate just to throw an error? I'm not 
> saying that is a non-goal, I'm just asking to find out if there's some other, 
> non-throwing recourse your code could use.

I'm not looking for an isBpund predicate - not sure the dividends would be 
worth the effort. If the hard-binding is non-negotiable then it would be more 
useful (and instructive for the user) for call/apply to tell me why it won't 
change my context - I'd rather it throw an error* than have our utils silently 
fail because the user was unaware of the semantics of =>. 

*If the intention is to use call/apply purely as an argument passer this can be 
indicated by a null context argument which would suppress the error



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

Reply via email to