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 body!
>>
>> I landed on 'beget' because 'create' is close but vague yet poisoned, and we
>> need something pithy. Doug already employed it ages ago. Is there a reason
>> you don't like 'beget'?
> Also, 'beget' does match the "sire" or "hatch" connotation of taking a parent
> (Self again) object and differentialy inheriting another object from it via
> proto-linking. Clone means make a twin and mutate. Copy is, well, just a copy
> -- arguably close to clone and one char shorter (so Self chose well). What we
> have with <| is more like "generate a child" -- hence, 'beget'.
Asking Google for "beget":
---
Verb:
(typically of a man, sometimes of a man and a woman) Bring (a child)
into existence by the process of reproduction.
Give rise to; bring about.
Synonyms:
generate - breed - procreate - engender - father
---
It sounds indeed very much what you mean. I had to look up, because I,
as a non-native English speaker had never come across the word "beget".
I had seen some JS libraries which used that word (which I thought was
specific to the library).
I think it would be interested to know what other non-native English
speaker think of beget. While operators like "typeof" or "instanceof"
have a pretty straightforward meaning, "beget" sounds more difficult to
grasp for non-native speakers, even those who are familiar with
programming (I had decent experience in C, C++, Java and Lisp before
starting with JavaScript).
"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.
Allen:
> my original suggest is that <| should be produced "prototype for"
What about 'protofor'?
let obj = base protofor {a: 1, b: 2}
let arr = base protofor [p, q, r]
let fun = base protofor function (...args) { ... }
let re = base protofor /(\w+)\s+(\w)+/g
Once again, for the specific case of functions, the proto operator has a
semantics that goes way beyond setting the [[prototype]] internal
property. Maybe 'protofor' for the [[prototype]] and 'beget' for the
constructor-related semantics?
David
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss