On Mon, Jun 11, 2012 at 3:50 PM, Brendan Eich <[email protected]> wrote:
> Irakli Gozalishvili wrote: > >> Sorry for not being clear about this. Here is a simplified example of the >> implementation: >> https://gist.github.com/**2911817 <https://gist.github.com/2911817> >> >> Also this is just a single particular example, but I expect there to be >> more. I think what I'm >> really asking for is a way to know if …rest is being used. >> > > Your code doesn't work on a function that uses arguments the old fashioned > way, though. > > Yes, you can make ...rest affect .length and make a dispatcher that counts > on that, but it's a just-so story and a hard case. Hard cases make bad law. > If it really matters, we can provide better reflection facilities, but I'm > pretty sure it doesn't occur enough to justify doing so now. > > So use the toString hack if you must and let's see if this use-case > becomes hot. I think this is a pretty creative snippet of code, but ultimately unreliable for the reasons mentioned. It does bring up something else, though, that I've avoided mentioning so far, which is pattern matching. I haven't mentioned it because there is clearly a strawman<http://wiki.ecmascript.org/doku.php?id=strawman:pattern_matching>for it, and that never made it to harmony, but in light of this thread I wanted to reiterate how useful it would be. It would not really help function.length, but would address the real underlying problem that the arity dispatcher is trying to tackle. In a language without overloading, the ability to do pattern matching would be an excellent solution to a very common problem. We already have destructuring, it seems like such a small jump to pattern matching. Hard to tell from looking at the strawman why that never made it. If its a matter or feature bloat, I would rate that higher than some other things like default args or array comprehensions. - Russ - Russ
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

