RE: let* is the new var

2008-04-02 Thread Lars Hansen
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

2008-04-02 Thread Jeff Dyer
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

2008-04-02 Thread Jeff Dyer
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

2008-04-02 Thread Michael O'Brien
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

2008-03-25 Thread Dave Herman
 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

2008-03-25 Thread Dave Herman
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