RE: let* is the new var
Don't remember this ever coming up; I always assumed it would be like for ES3 code (scopes of names are the entire block; functions are initialized first; then variables in order). --lars -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of P T Withington Sent: 26. mars 2008 05:48 To: Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: Re: let* is the new var This conversation makes me ask, what is the semantics of var in a class declaration? E.g.: class ... { function foo ... var fooAlias = foo; var bar = 42; var bletch = bar + 1; etc. Same rules? All slots created at the top of the block and initializations executed in order? I'm particularly interested in the case of creating an alias to a function. On 2008-03-25, at 19:03 EDT, Dave Herman wrote: Created as ticket #375: http://bugs.ecmascript.org/ticket/375 Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss
RE: let* is the new var
Let's use 866 7052554, 6608431. dialing now... -Original Message- From: [EMAIL PROTECTED] [mailto:es4-discuss- [EMAIL PROTECTED] On Behalf Of Lars Hansen Sent: Wednesday, April 02, 2008 2:49 PM To: P T Withington; Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: RE: let* is the new var Don't remember this ever coming up; I always assumed it would be like for ES3 code (scopes of names are the entire block; functions are initialized first; then variables in order). --lars -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of P T Withington Sent: 26. mars 2008 05:48 To: Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: Re: let* is the new var This conversation makes me ask, what is the semantics of var in a class declaration? E.g.: class ... { function foo ... var fooAlias = foo; var bar = 42; var bletch = bar + 1; etc. Same rules? All slots created at the top of the block and initializations executed in order? I'm particularly interested in the case of creating an alias to a function. On 2008-03-25, at 19:03 EDT, Dave Herman wrote: Created as ticket #375: http://bugs.ecmascript.org/ticket/375 Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss
RE: let* is the new var
Oops. Never mind :) Jd -Original Message- From: [EMAIL PROTECTED] [mailto:es4-discuss- [EMAIL PROTECTED] On Behalf Of Jeff Dyer Sent: Wednesday, April 02, 2008 3:06 PM To: Lars Hansen; P T Withington; Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: RE: let* is the new var Let's use 866 7052554, 6608431. dialing now... -Original Message- From: [EMAIL PROTECTED] [mailto:es4-discuss- [EMAIL PROTECTED] On Behalf Of Lars Hansen Sent: Wednesday, April 02, 2008 2:49 PM To: P T Withington; Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: RE: let* is the new var Don't remember this ever coming up; I always assumed it would be like for ES3 code (scopes of names are the entire block; functions are initialized first; then variables in order). --lars -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of P T Withington Sent: 26. mars 2008 05:48 To: Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: Re: let* is the new var This conversation makes me ask, what is the semantics of var in a class declaration? E.g.: class ... { function foo ... var fooAlias = foo; var bar = 42; var bletch = bar + 1; etc. Same rules? All slots created at the top of the block and initializations executed in order? I'm particularly interested in the case of creating an alias to a function. On 2008-03-25, at 19:03 EDT, Dave Herman wrote: Created as ticket #375: http://bugs.ecmascript.org/ticket/375 Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss
Re: let* is the new var
We define the slots for vars and functions first at the top of the block and do initializations in-order where they reside in the code flow. So: class XX { function foo ... // fooAlias exists here but is undefined var fooAlias = foo // fooAlias is now initialized } Michael On Apr 2, 2008, at 2:49 PM, Lars Hansen wrote: Don't remember this ever coming up; I always assumed it would be like for ES3 code (scopes of names are the entire block; functions are initialized first; then variables in order). --lars -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of P T Withington Sent: 26. mars 2008 05:48 To: Dave Herman Cc: es4-discuss Discuss; Jon Zeppieri Subject: Re: let* is the new var This conversation makes me ask, what is the semantics of var in a class declaration? E.g.: class ... { function foo ... var fooAlias = foo; var bar = 42; var bletch = bar + 1; etc. Same rules? All slots created at the top of the block and initializations executed in order? I'm particularly interested in the case of creating an alias to a function. On 2008-03-25, at 19:03 EDT, Dave Herman wrote: Created as ticket #375: http://bugs.ecmascript.org/ticket/375 Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss
Re: let* is the new var
Was let*, possibly under some other name, ever discussed/proposed? For let definitions, I think the following is supposed to work: { let x = n; let y = foo(x); ... } That is, x and y should be bound sequentially, not in parallel, right? Neither, actually -- for let declarations. In your example, both x and y are bound in the entire block -- this is hoisting just like `var', except it's only hoisted to the top of the block instead of the function. This might sound surprising, but this means that it's letrec rather than let*. For let expressions and let statements, though, I agree with you. I think we ought to have let* semantics, and as you say I think the RI currently implements let semantics. Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss
Re: let* is the new var
Created as ticket #375: http://bugs.ecmascript.org/ticket/375 Dave ___ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss