Re: block lambda revival

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 7:20 PM, Jon Zeppieri wrote: > On Tue, May 24, 2011 at 3:29 PM, Brendan Eich wrote: >> >> >> BlockArguments : >>BlockLambda >>BlockArguments [no LineTerminator here] BlockLambda >>BlockArguments [no LineTerminator here] ( Expression ) >> > > The interleaved par

Re: block lambda revival

2011-05-24 Thread Jon Zeppieri
On Tue, May 24, 2011 at 3:29 PM, Brendan Eich wrote: > > > BlockArguments : > BlockLambda > BlockArguments [no LineTerminator here] BlockLambda > BlockArguments [no LineTerminator here] ( Expression ) > The interleaved parenthesized expression worries me for two reasons: - Waldemar's

Re: block lambda revival

2011-05-24 Thread Brendan Eich
I've updated the grammar to fix the bugs Waldemar and Jon pointed out: http://wiki.ecmascript.org/doku.php?id=strawman:block_lambda_revival ElementList : // See 11.1.4 Elisionopt InitialValue ElementList , Elisionopt InitialValue PropertyAssignment :

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 7:44 AM, Brendan Eich wrote: > You're right, this would be unambiguous because a block can't initialize a > var. The only interpretation is an expression, which with Allen's proposal > combined with object intiialiser shorthand would parse {!b}. One more thing: {b} in expres

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 7:37 AM, Sean Eagan wrote: > I am definitely a grammar classification noob, so feel free to rake me > over the coals on this if necessary, but how is : > > var a = {!b}; > > ... any more difficult to parse than ... > > var a = {b}; > > ... both {b} and {!b} and valid blocks

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Sean Eagan
On Tue, May 24, 2011 at 9:10 AM, Brendan Eich wrote: > On May 24, 2011, at 7:02 AM, Sean Eagan wrote: > >>> This conflicts with the existing: >>> var foo = "bar"; >>> {foo}  // "bar" >>> {!foo} // false >>> >> >> No, just because |{!b}| is current syntax, doesn't mean that |var a = {!b}| >> is. >

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 7:02 AM, Sean Eagan wrote: >> This conflicts with the existing: >> var foo = "bar"; >> {foo} // "bar" >> {!foo} // false >> > > No, just because |{!b}| is current syntax, doesn't mean that |var a = {!b}| > is. I've been working on syntax lately, and based on that work, I t

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Sean Eagan
On Tue, May 24, 2011 at 9:02 AM, Sean Eagan wrote: > // -> > > function A (){ >  var a = arguments[0]; >  Object.defineProperty(this, "b", {configurable: false, enumerable: > false, writable: true, arguments[1]}) >  Object.defineProperty(this, "c", {configurable: true, enumerable: > true, writable

Re: Proposal: Concise instance initialisation

2011-05-24 Thread Sean Eagan
On Mon, May 23, 2011 at 4:44 PM, Rick Waldron wrote: > Please excuse me, I'm just looking for clarification - thanks in advance: > >> >> Also, the current infix writable mark does not compose with "Implicit >> property initialization expressions" [1] as noted in [2].  Using a >> prefix fixes this:

Re: I noted some open issues on "Classes with Trait Composition"

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 6:20 AM, Andreas Rossberg wrote: > - Treat projection from a module M (which we can distinguish > statically) specially. If we project a yet unclosed function: > * if it's called right away, pass M.Env as the environment, > * if it's not called, allocate a proper closure for

Re: block lambda revival

2011-05-24 Thread Brendan Eich
On May 24, 2011, at 12:18 AM, Jon Zeppieri wrote: > Should that be: > > MemberExpression [no LineTerminator here] BlockArguments > > instead? This may just be the sleepiness talking, but it looks like a > CallExpression always starts with > > MemberExpression Arguments > > which would requ

Re: I noted some open issues on "Classes with Trait Composition"

2011-05-24 Thread Andreas Rossberg
On 23 May 2011 19:48, Mark S. Miller wrote: > On Mon, May 23, 2011 at 7:22 AM, Andreas Rossberg > wrote: >> On 20 May 2011 15:42, Mark S. Miller wrote: >> > Modules aren't generative. >> >> If you mean that you cannot create several objects from them, then >> yes, but see my reply to Dave. >> >>

Re: I noted some open issues on "Classes with Trait Composition"

2011-05-24 Thread Andreas Rossberg
On 23 May 2011 19:42, Mark S. Miller wrote: > On Mon, May 23, 2011 at 2:16 PM, Andreas Rossberg > wrote: >> Compare: >> >>  class Point { >>    private x, y >>    constructor(x0, y0) { x = x0; y = y0 } >>    public function move(dx, dy) { x += dx; y += dy } >>    public function abs() { return Ma

Re: block lambda revival

2011-05-24 Thread Jon Zeppieri
On Fri, May 20, 2011 at 8:54 PM, Brendan Eich wrote: > As promised/threatened: > http://wiki.ecmascript.org/doku.php?id=strawman:block_lambda_revival > Sorry to take a step back here. After reading Waldemar's comments, I took a closer look at the formal grammar, and I'm puzzled by the production