Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.)

2009-08-13 Thread Brendan Eich
On Nov 4, 2008, at 10:43 AM, David-Sarah Hopwood wrote: The bug that Brendan and I were referring to was 61911: https://bugzilla.mozilla.org/show_bug.cgi?id=61911 For reference so new readers don't have to look far back in the old thread. On FF3.0.3, a bit of testing reveals that

Re: Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.)

2009-08-13 Thread Juriy Zaytsev
On Aug 13, 2009, at 1:07 PM, Brendan Eich wrote: On Nov 4, 2008, at 10:43 AM, David-Sarah Hopwood wrote: [...] callable regexps were a SpiderMonkey extension never adopted by any non- Mozilla JavaScript implementation AFAIK, and they introduce an irregularity in the language. Not so.

Re: Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.)

2009-08-13 Thread Brendan Eich
On Aug 13, 2009, at 1:28 PM, Juriy Zaytsev wrote: There was a discussion of this ticket on Hacker News this morning and we had this slight confusion on whether giving RegExp objects a [[Call]] property is permitted by spec http://news.ycombinator.com/item?id=760529 . I thought it was, since

Re: Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.)

2009-08-13 Thread Juriy Zaytsev
On Aug 13, 2009, at 4:44 PM, Brendan Eich wrote: On Aug 13, 2009, at 1:28 PM, Juriy Zaytsev wrote: There was a discussion of this ticket on Hacker News this morning and we had this slight confusion on whether giving RegExp objects a [[Call]] property is permitted by spec

RE: Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.)

2009-08-13 Thread Allen Wirfs-Brock
Subject: Re: Callable RegExp vs. typeof (was: Re: Draft of Function.prototype.bind.) On Aug 13, 2009, at 1:28 PM, Juriy Zaytsev wrote: There was a discussion of this ticket on Hacker News this morning and we had this slight confusion on whether giving RegExp objects a [[Call]] property

Re: Draft of Function.prototype.bind.

2008-11-10 Thread Waldemar Horwat
Mark S. Miller wrote: 11. If the [[Class]] property of /G/ is *Function*, then 1. Get the *length* property of /G/. 2. Let /L/ be Result(11a) minus the length of /A/. What does minus mean here? Result(11a) could be anything. Waldemar

Re: Draft of Function.prototype.bind.

2008-11-10 Thread Mark S. Miller
On Mon, Nov 10, 2008 at 4:48 PM, Waldemar Horwat [EMAIL PROTECTED]wrote: Mark S. Miller wrote: 11. If the [[Class]] property of /G/ is *Function*, then 1. Get the *length* property of /G/. 2. Let /L/ be Result(11a) minus the length of /A/. What does

Re: Draft of Function.prototype.bind.

2008-11-07 Thread Brendan Eich
On Nov 6, 2008, at 9:58 PM, Allen Wirfs-Brock wrote: -Original Message- From: [EMAIL PROTECTED] [mailto:es3.x-discuss- [EMAIL PROTECTED] On Behalf Of Brendan Eich Sent: Thursday, November 06, 2008 8:05 PM ... TC39 has generally avoided adding new globals; JSON is it for ES3.1

RE: Draft of Function.prototype.bind.

2008-11-07 Thread Allen Wirfs-Brock
/[[DefaultValue]]/hint mechanisms of the specification. -Original Message- From: Brendan Eich [mailto:[EMAIL PROTECTED] Sent: Friday, November 07, 2008 1:06 AM To: Allen Wirfs-Brock Cc: David-Sarah Hopwood; [EMAIL PROTECTED]; es- [EMAIL PROTECTED] Subject: Re: Draft

RE: Draft of Function.prototype.bind.

2008-11-06 Thread Allen Wirfs-Brock
: [EMAIL PROTECTED] [mailto:es3.x-discuss- [EMAIL PROTECTED] On Behalf Of David-Sarah Hopwood Sent: Thursday, November 06, 2008 5:11 PM To: es-discuss@mozilla.org; [EMAIL PROTECTED] Subject: Re: Draft of Function.prototype.bind. Brendan Eich wrote: On Nov 4, 2008, at 10:52 AM, David-Sarah Hopwood

Re: Draft of Function.prototype.bind.

2008-11-06 Thread Brendan Eich
On Nov 6, 2008, at 5:11 PM, David-Sarah Hopwood wrote: Brendan Eich wrote: On Nov 4, 2008, at 10:52 AM, David-Sarah Hopwood wrote: Brendan Eich wrote: We'll make regexps non-callable in a future release whose numbering allows us to break compatibility for all the users who may be relying

RE: Draft of Function.prototype.bind.

2008-11-06 Thread Allen Wirfs-Brock
-Original Message- From: [EMAIL PROTECTED] [mailto:es3.x-discuss- [EMAIL PROTECTED] On Behalf Of Brendan Eich Sent: Thursday, November 06, 2008 8:05 PM ... TC39 has generally avoided adding new globals; JSON is it for ES3.1 (AFAIK), and since Murphy was an optimist, it is breaking

Re: Draft of Function.prototype.bind.

2008-11-04 Thread Brendan Eich
On Nov 4, 2008, at 10:43 AM, David-Sarah Hopwood wrote: Can someone provide a link to this bug, or to that prior discussion of this bug? Thanks. Sorry, I meant to post that before. The bug that Brendan and I were referring to was 61911: https://bugzilla.mozilla.org/show_bug.cgi?id=61911

Re: Draft of Function.prototype.bind.

2008-11-04 Thread Brendan Eich
On Nov 4, 2008, at 10:52 AM, David-Sarah Hopwood wrote: Brendan Eich wrote: We'll make regexps non-callable in a future release whose numbering allows us to break compatibility for all the users who may be relying on this JS extension. What's wrong with that release being the one that

Re: Draft of Function.prototype.bind.

2008-11-03 Thread David-Sarah Hopwood
Mike Shaver wrote: On Mon, Nov 3, 2008 at 12:32 PM, David-Sarah Hopwood [EMAIL PROTECTED] wrote: An object that was previously a callable nonfunction in some browser, can always be compatibly changed into a real function instead. Does that mean that RegExp.prototype has as its prototype

Re: Draft of Function.prototype.bind.

2008-11-03 Thread Brendan Eich
On Nov 3, 2008, at 6:50 PM, David-Sarah Hopwood wrote: That is, native objects that implement [[Call]] must be functions. No, see 16, second list, second bullet: An implementation may provide additional types, values, objects, properties, and functions beyond those described in this

Re: Draft of Function.prototype.bind.

2008-11-03 Thread Brendan Eich
On Nov 3, 2008, at 7:16 PM, David-Sarah Hopwood wrote: It's completely trivial, but if you want a hand-wavey demo: function makeHTMLCollection(underlying) { function collection(nameOrIndex) { // I think this is how MSIE behaves: return typeof nameOrIndex === 'string' ?

Re: Draft of Function.prototype.bind.

2008-11-03 Thread David-Sarah Hopwood
Brendan Eich wrote: On Nov 3, 2008, at 6:50 PM, David-Sarah Hopwood wrote: That is, native objects that implement [[Call]] must be functions. No, see 16, second list, second bullet: An implementation may provide additional types, values, objects, properties, and functions beyond those

Re: Draft of Function.prototype.bind.

2008-11-03 Thread David-Sarah Hopwood
Maciej Stachowiak wrote: On Nov 3, 2008, at 11:32 AM, David-Sarah Hopwood wrote: Mark S. Miller wrote: First, I'd like to thank Richard Cornford, cc'ed, who provided the earlier draft of Function.prototype.bind that grew into this one. Thanks! Below, I modified Richard's draft according to

Re: Draft of Function.prototype.bind.

2008-11-03 Thread Maciej Stachowiak
On Nov 3, 2008, at 10:39 PM, Brendan Eich wrote: On Nov 3, 2008, at 10:26 PM, Maciej Stachowiak wrote: JavaScriptCore's RegExp objects have been callable since Safari 1.0 Beta 1 and I believe they have returned function from typeof that whole time. (The Mozilla bug report says otherwise

Re: Draft of Function.prototype.bind.

2008-11-03 Thread Brendan Eich
On Nov 3, 2008, at 8:51 PM, Mark S. Miller wrote: On Mon, Nov 3, 2008 at 7:08 PM, Brendan Eich [EMAIL PROTECTED] wrote: See also 11.4.3 The typeof Operator (second to last table row). For reference, the last three rows of that table are Object (native and doesn't implement [[Call]])

Re: Draft of Function.prototype.bind.

2008-11-03 Thread Brendan Eich
On Nov 3, 2008, at 8:01 PM, David-Sarah Hopwood wrote: Brendan Eich wrote: On Nov 3, 2008, at 6:50 PM, David-Sarah Hopwood wrote: That is, native objects that implement [[Call]] must be functions. No, see 16, second list, second bullet: An implementation may provide additional types,

Re: Draft of Function.prototype.bind.

2008-10-31 Thread Mark S. Miller
With the formatting from the word doc, as converted by other tools: *15.3.4.5 Function.prototype.bind (thisArg [, arg1 [, arg2, …]])* The bind method takes one or more arguments, *thisArg * and (optionally) * arg1*, *arg2*, etc, and returns a new function object by performing the following steps: