Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 30, 2011, at 5:55 PM, Axel Rauschmayer wrote: The only thing I find off the mark is the typography of |. In light of this, and of the anti-grawlix reaction among many people, could we revisit an infix operator used in restricted productions with [no LineTerminator here] on the left

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 30, 2011, at 6:19 PM, Axel Rauschmayer wrote: let obj = base beget {a: 1, b: 2} let arr = base beget [p, q, r] let fun = base beget function (...args) { ... } let re = base beget /(\w+)\s+(\w)+/g It's still idiomatic as a name for differential inheritance,

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Jorge
On 30/10/2011, at 23:36, Brendan Eich wrote: On Oct 30, 2011, at 12:33 PM, Allen Wirfs-Brock wrote: The object exemplar approach is just like self or selfish, except that it builds upon features that are already in JS. Specifically, it uses the new operator instead of a new method and it

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
Does not overcome the grawlix objection. /be On Oct 31, 2011, at 12:20 AM, Jorge wrote: On 30/10/2011, at 23:36, Brendan Eich wrote: On Oct 30, 2011, at 12:33 PM, Allen Wirfs-Brock wrote: The object exemplar approach is just like self or selfish, except that it builds upon features that

Re: More thoughts on Allen's class definition pattern

2011-10-31 Thread Claus Reinke
The only thing I find off the mark is the typography of |. In light of this, and of the anti-grawlix reaction among many people, could we revisit an infix operator used in restricted productions with [no LineTerminator here] on the left of the operator contextual keyword? Am I the only one

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread David Bruant
Le 30/10/2011 23:36, Brendan Eich a écrit : On Oct 30, 2011, at 12:33 PM, Allen Wirfs-Brock wrote: The object exemplar approach is just like self or selfish, except that it builds upon features that are already in JS. Specifically, it uses the new operator instead of a new method and it

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
I think it helps if it reads well. For example: const Employee = Person refinedBy { ... } const Employee = Person subsuming { ... } const Employee = Person parenting { ... } const Employee = Person above { ... } const Employee = Person before { ... } Sorry, these are ghastly (it's

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread David Bruant
Le 31/10/2011 07:20, Brendan Eich a écrit : On Oct 30, 2011, at 11:11 PM, Brendan Eich wrote: It ain't 'create' except in a vacuous sense that's also already taken by ES5 Object.create. It isn't subsuming in my view. refinedBy is closer but you'll get camelCaps keywords into JS over my dead

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
I searched a bit and re-read Smalltalk, Self, Cecil, and Io docs to get a handle on what | does. It is not 'clone'. It's not 'copy' (Self) either, clearly. It ain't 'create' except in a vacuous sense that's also already taken by ES5 Object.create. It isn't subsuming in my view.

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Quildreen Motta
I still think | is more straight-forward to grasp to non-native speakers -- they're likely to have stumbled upon that on UML classes, methinks. Also, there's the problem of creating new reserved words in the languages, imho it makes a language feel heavier and clunkier. I think one of the greatest

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
beget sounds very much like what we want, but I just wanted to raise a point about understanding and adoption, especially for the language of the web. I wouldn’t worry, all of a programming language is new vocabulary, anyway. You always have to learn semantics, so learning a new word

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Rick Waldron
begets is pure win. http://i.word.com/idictionary/beget, it's pronounceable and searchable/google-able (being able to find new syntax docs is crucial). It has a known history and follows an existing grammar precedent. Perhaps least importantly, I feel like a can get excited about begets /Rick

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
begets is pure win. http://i.word.com/idictionary/beget, it's pronounceable and searchable/google-able (being able to find new syntax docs is crucial). It has a known history and follows an existing grammar precedent. Perhaps least importantly, I feel like a can get excited about begets

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 30, 2011, at 11:20 PM, Brendan Eich wrote: I landed on 'beget' because 'create' is close but vague yet poisoned, and we need something pithy. Also, 'beget' does match the sire or hatch connotation of taking a parent (Self again) object and differentialy inheriting another object

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 31, 2011, at 5:45 AM, Axel Rauschmayer wrote: beget sounds very much like what we want, but I just wanted to raise a point about understanding and adoption, especially for the language of the web. I wouldn’t worry, all of a programming language is new vocabulary, anyway. You

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Neil Eades
On 31 October 2011 15:23, Allen Wirfs-Brock al...@wirfs-brock.com wrote: some others (probably all too long for Brendan's tastes): I would assume a two word combination such as super for would be too verbose to be acceptable. -- Neil ___

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 30, 2011, at 11:07 PM, Brendan Eich wrote: On Oct 30, 2011, at 5:55 PM, Axel Rauschmayer wrote: The only thing I find off the mark is the typography of |. In light of this, and of the anti-grawlix reaction among many people, could we revisit an infix operator used in restricted

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
We've been over this before. 1. No camelCaps. 2. No oof substrings (comical!). 3. No prepositional phrases that suggest predicates, where active verbs are requried. /be On Oct 31, 2011, at 4:58 AM, David Bruant wrote: Le 30/10/2011 23:36, Brendan Eich a écrit : On Oct 30, 2011, at 12:33 PM,

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
beget sounds very much like what we want, but I just wanted to raise a point about understanding and adoption, especially for the language of the web. I wouldn’t worry, all of a programming language is new vocabulary, anyway. You always have to learn semantics, so learning a new word

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 31, 2011, at 9:07 AM, Axel Rauschmayer wrote: beget sounds very much like what we want, but I just wanted to raise a point about understanding and adoption, especially for the language of the web. I wouldn’t worry, all of a programming language is new vocabulary, anyway. You

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
I like all of them (“form” does have DOM connotations, though), the last ones should be in third person. Brendan’s “protos” could work, too, as an abbreviation for “prototypes”. On Oct 31, 2011, at 16:23 , Allen Wirfs-Brock wrote: some others (probably all too long for Brendan's tastes):

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread John J Barton
On Sun, Oct 30, 2011 at 12:33 PM, Allen Wirfs-Brock al...@wirfs-brock.comwrote: On Oct 29, 2011, at 10:03 PM, John J Barton wrote: ... JS is what it is. I don't think it is possible to make prototypes disappear without breaking many (most??) existing JS programs. (This perfectly

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread John J Barton
On Sun, Oct 30, 2011 at 1:08 PM, Allen Wirfs-Brock al...@wirfs-brock.comwrote: On Oct 30, 2011, at 10:39 AM, John J Barton wrote: In the abstract I would agree, but, in our world, every college sophomore CS student learns a class based language and, in our world, prototypical inheritance

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 5:45 AM, Axel Rauschmayer wrote: beget sounds very much like what we want, but I just wanted to raise a point about understanding and adoption, especially for the language of the web. I wouldn’t worry, all of a programming language is new vocabulary, anyway. You always

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 8:49 AM, Allen Wirfs-Brock wrote: On Oct 30, 2011, at 11:07 PM, Brendan Eich wrote: On Oct 30, 2011, at 5:55 PM, Axel Rauschmayer wrote: The only thing I find off the mark is the typography of |. In light of this, and of the anti-grawlix reaction among many people,

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
My worry is more that it doesn’t read like a sentence. I would prefer const Employee = Person begets { ... }; That's an operator, it happens in an evaluation regime at a certain time. It should use a pidgin-English word or phrase free of tense elaboration, as delete, in, instanceof do

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 9:45 AM, John J Barton wrote: In my opinion for new syntax to support classical inheritance should 1) target beginners and 2) help avoid the need for F.prototype/new F() pattern for simple inheritance. John, I almost-completely agree with you (yay!), except for the |new

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 9:59 AM, Axel Rauschmayer wrote: Person beget { ... } = ??? Is beget an imperative here or an infinitive? Both! But it's not a declarative present-tense linking form, as extends is in class declarations (I think class literals is a terrible phrase, BTW -- too many

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Jorge
On 31/10/2011, at 08:57, Brendan Eich wrote: On Oct 31, 2011, at 12:20 AM, Jorge wrote: Perhaps a long arrow may work ? let object= base == {a: 1, b: 2}; Does not overcome the grawlix objection. Hmm, it's grawlix-y too but... how about let object= base :: {a: 1, b: 2}; ? let

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 10:04 AM, Jorge wrote: On 31/10/2011, at 08:57, Brendan Eich wrote: On Oct 31, 2011, at 12:20 AM, Jorge wrote: Perhaps a long arrow may work ? let object= base == {a: 1, b: 2}; Does not overcome the grawlix objection. Hmm, it's grawlix-y too but... how about

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread John J Barton
On Mon, Oct 31, 2011 at 10:01 AM, Brendan Eich bren...@mozilla.com wrote: On Oct 31, 2011, at 9:45 AM, John J Barton wrote: In my opinion for new syntax to support classical inheritance should 1) target beginners and 2) help avoid the need for F.prototype/new F() pattern for simple

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 10:45 AM, John J Barton wrote: On Mon, Oct 31, 2011 at 10:01 AM, Brendan Eich bren...@mozilla.com wrote: On Oct 31, 2011, at 9:45 AM, John J Barton wrote: In my opinion for new syntax to support classical inheritance should 1) target beginners and 2) help avoid the need

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread David Flanagan
I've been noodling around with various syntax ideas in this post, and it has gotten pretty long, so here are the highlights: var obj = base | {a:1,b:2}; // I think its okay as-is. var obj = {:base a:1, b:2}; // Its not really an operator, anyway var obj = base prototype

Tachyon JS VM

2011-10-31 Thread Maxime Chevalier-Boisvert
Hello, I recently presented a paper about Tachyon, a research (meta-circular) JavaScript VM implementation at DLS 2011. Sam Tobin-Hochstadt suggested that I join this list and mention our effort, to get in touch with other JS implementers, and perhaps get some feedback/suggestions or

Re: Tachyon JS VM

2011-10-31 Thread Mike Samuel
2011/10/31 Maxime Chevalier-Boisvert maximechevali...@gmail.com: Hello, I recently presented a paper about Tachyon, a research (meta-circular) JavaScript VM implementation at DLS 2011. Sam Tobin-Hochstadt suggested that I join this list and mention our effort, to get in touch with other JS

Re: Tachyon JS VM

2011-10-31 Thread Maxime Chevalier-Boisvert
Could you explain how this differs from other meta-circular interpreters like Narcissus? Is it correct to say that this is not a tree-interpreter like Narcissus, but a JavaScript to native compiler written in JS. Like Narcissus, it is implemented in JavaScript, but it has no interpreter. It

Re: Tachyon JS VM

2011-10-31 Thread Mike Samuel
2011/10/31 Maxime Chevalier-Boisvert maximechevali...@gmail.com: If it's not a tree-interpreter, then running inside a JVM that has ephemerons doesn't help you on the GC front?  Does the native code generated fit within the NaCL alignment restrictions? We're not running within a JVM. The goal

Re: Tachyon JS VM

2011-10-31 Thread Brendan Eich
On Oct 31, 2011, at 1:38 PM, Mike Samuel wrote: 2011/10/31 Maxime Chevalier-Boisvert maximechevali...@gmail.com: Hello, I recently presented a paper about Tachyon, a research (meta-circular) JavaScript VM implementation at DLS 2011. Sam Tobin-Hochstadt suggested that I join this list and

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
thanks, Dave, some lateral thinking is really helpful. more below On Oct 31, 2011, at 12:43 PM, David Flanagan wrote: I've been noodling around with various syntax ideas in this post, and it has gotten pretty long, so here are the highlights: var obj = base | {a:1,b:2}; // I think

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Axel Rauschmayer
If its got to be an infix keyword operator, I'm not crazy about beget. I'd prefer proto. +2 The next best I can come up with is share. (That is assuming that sub and subclass are off-limits because ES.next.next may someday have a class keyword.) +1 If the left and right-hand sides

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 31, 2011, at 10:45 AM, John J Barton wrote: On Mon, Oct 31, 2011 at 10:01 AM, Brendan Eich bren...@mozilla.com wrote: On Oct 31, 2011, at 9:45 AM, John J Barton wrote: In my opinion for new syntax to support classical inheritance should 1) target beginners and 2) help avoid the

Re: Internationalization feedback

2011-10-31 Thread Norbert Lindenberg
Nicholas, Andrea, Rick, Thanks for your feedback. A few replies: Why DateTimeFormat and NumberFormat as separate object types rather than methods on Date.prototype and Number.prototype: I suspect Conway's Law played a bit of a role here - an ad hoc team was chartered by TC 39 with developing a

Re: Tachyon JS VM

2011-10-31 Thread Maxime Chevalier-Boisvert
I guess that's perhaps what people are more familiar with, but I don't think the term meta-circular should be limited to interpreters. I was using it in the same way as the Klein project (SELF in SELF) did. Perhaps the term self-hosted is more descriptive. The goal is for Tachyon to compile

Minimalist Classes

2011-10-31 Thread Jeremy Ashkenas
'Evening, ES-Discuss. After poking a stick in the bees' nest this morning (apologies, Allen), and in the spirit of loyal opposition, it's only fair that I throw my hat in the ring. Here is a proposal for minimalist JavaScript classes that enable behavior that JavaScripters today desire (as

Re: Minimalist Classes

2011-10-31 Thread Axel Rauschmayer
Here is a proposal for minimalist JavaScript classes that enable behavior that JavaScripters today desire (as evidenced by libraries and languages galore), without adding any new semantics beyond what already exists in ES3. https://gist.github.com/1329619 I like the philosophy behind it

Re: Minimalist Classes

2011-10-31 Thread Erik Arvidsson
This is very similar to what Dave Herman, Sam Tobin-Hochstadt and I wrote at the whiteboard after the meeting was over at the last face to face meeting. I like this pattern too but at this point we are stuck at the following:

Re: Minimalist Classes

2011-10-31 Thread David Herman
Hi Jeremy, Thanks for the proposal. I've been advocating a minimalist approach to classes for a while now; I think it's a good goal. A few of us sketched out something similar on a whiteboard in the last face-to-face meeting; at least, it used the object literal body. We hadn't thought of two

Re: Minimalist Classes

2011-10-31 Thread Jeremy Ashkenas
On Mon, Oct 31, 2011 at 10:13 PM, Erik Arvidsson erik.arvids...@gmail.comwrote: I like this pattern too but at this point we are stuck at the following: https://mail.mozilla.org/pipermail/es-discuss/2011-September/016904.html Right, but stuck is just a state of mind. ;) To re-quote: 1.

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread John J Barton
On Mon, Oct 31, 2011 at 4:27 PM, Allen Wirfs-Brock al...@wirfs-brock.com wrote: On Oct 31, 2011, at 10:45 AM, John J Barton wrote: On Mon, Oct 31, 2011 at 10:01 AM, Brendan Eich bren...@mozilla.com wrote: On Oct 31, 2011, at 9:45 AM, John J Barton wrote: In my opinion for new syntax to

Re: Minimalist Classes

2011-10-31 Thread Jeremy Ashkenas
Hey Dave. On Mon, Oct 31, 2011 at 10:28 PM, David Herman dher...@mozilla.com wrote: But with #2 I'm not clear on the intended semantics. You say this could be desugared but don't provide the details of the desugaring. The RHS is an arbitrary expression that evaluates to the prototype object

Re: Minimalist Classes

2011-10-31 Thread David Herman
class Fox extends Animal { dig: function() {} } Fox becomes a constructor function with a `.prototype` that is set to an instance of Animal that has been constructed without calling the Animal() constructor. (The usual temporary-constructor-to-hold-a-prototype two step shuffle). All

Lecture on Dart at Stanford

2011-10-31 Thread Bill Frantz
On 10/29/11 at 14:59, bren...@mozilla.com (Brendan Eich) wrote: Dart is not perfect either but it hangs together slightly better. It's not to my taste, and I don't see it replacing JS by acclamation, but again: can we improve ES6 classes by reflecting on what's good in it? There will be a

Re: More thoughts on Allen’s class definition pattern

2011-10-31 Thread Allen Wirfs-Brock
On Oct 31, 2011, at 7:37 PM, John J Barton wrote: On Mon, Oct 31, 2011 at 4:27 PM, Allen Wirfs-Brock al...@wirfs-brock.com wrote: We have talked quite a bit about how we could support very simple expression of prototypal inheritance... We have recently taken to calling this pattern

Re: Minimalist Classes

2011-10-31 Thread Jeremy Ashkenas
On Mon, Oct 31, 2011 at 11:11 PM, David Herman dher...@mozilla.com wrote: But IIUC, you're proposing a semantics where you construct a brand new object P whose __proto__ is SuperClass.prototype and then copy all the own-properties of the RHS into P. Not quite. P is a constructor function

Re: Minimalist Classes

2011-10-31 Thread David Herman
But IIUC, you're proposing a semantics where you construct a brand new object P whose __proto__ is SuperClass.prototype and then copy all the own-properties of the RHS into P. Not quite. P is a constructor function (class object), SuperClass is a constructor function. Unless I'm