Alternative syntax for <|

Dmitry Soshnikov dmitry.soshnikov at gmail.com
Wed Nov 16 12:11:01 PST 2011


On 16.11.2011 23:53, Rick Waldron wrote:
>
>
> On Wed, Nov 16, 2011 at 2:34 PM, Dmitry Soshnikov 
> <dmitry.soshnikov at gmail.com <mailto:dmitry.soshnikov at gmail.com>> wrote:
>
>     But why do we need new keyword?
>
>
> The discussion originated around how ugly <| is; an infix operator 
> keyword is easier to introduce into the language then an infix 
> operator made of symbols
>

Yes, I understand, but it doesn't answer the question -- why do we need 
_additional_ keyword if to represent e.g. like this:

// declaration

var foo extends bar {
   x: 100
}

// or via expression:

var foo = extends (debug ? bar { x: 100 } : baz { y : 200});

// or even
var foo = extends (debug ? bar : baz) {x : 100}

Anyway, forms with assignment are additions. The main part which I 
notice is the declarative form. Once again, a good thing is that we have 
the same syntactic form for defining/inhering simple objects and classes 
(only var/let and class keywords change).

Dmitry.

>
>     Actually, I can accept a new keyword in case if reasons will
>     really be serious. But in this case -- `extends' may fit quite nice.
>
>
> See: 
> https://mail.mozilla.org/pipermail/es-discuss/2011-October/017775.html

I believe I saw this discussion; it doesn't explain also why we can't do 
as I showed above (i.e. the declarative form with correct placemend of 
`extends').

>
>     P.S.: In general, it's just funny picture. Somehow ES4 made nice
>     classes with nice syntax. Why (Why Y NO?) now we invent some scary
>     things such as const Point = Point <|
>     {}.constructor.{}.prototype{}. Just... why? What has happened with
>     syntax idea even from ES4?
>

By the way, the question is still open and I'll be glad to hear at least 
small historical note on it.

P.S.: on <| -- speaking the truth I don't think it's ugly. Well, perhaps 
maybe I use to Ruby's < inheritance op. Maybe it's just "pipe part" | of 
it is ugly? :P

Dmitry.

>
>     On 16.11.2011 23:31, Rick Waldron wrote:
>>     As stated previously[1], my support for "begets" as pure win is
>>     unwavering.
>>
>>
>>     Rick
>>
>>     [1]
>>     https://mail.mozilla.org/pipermail/es-discuss/2011-October/017758.html
>>
>>
>>
>>
>>     On Wed, Nov 16, 2011 at 2:16 PM, Dmitry Soshnikov
>>     <dmitry.soshnikov at gmail.com <mailto:dmitry.soshnikov at gmail.com>>
>>     wrote:
>>
>>         On 16.11.2011 23:12, Erik Arvidsson wrote:
>>
>>             One thing that all of these discussions are missing is
>>             the hoisting
>>             property of function and any possible future classes. If
>>             we use "let
>>             Point = ..." we lose all hoisting and the order of your
>>             declarations
>>             starts to matter and we will end up in the C mess where
>>             forward
>>             references do not work.
>>
>>         No matter, we may rewrite it with `var':
>>
>>         // parent object
>>         var point = {x: 10, y: 20};
>>
>>         // child object
>>         var point3D extends point {
>>
>>          z: 30
>>         }
>>
>>         // a class
>>         class Point3D extends Point {
>>          constructor (x, y, z) { ... }
>>         }
>>
>>         It seems interesting for me, since we define both -- child
>>         classes and child objects with the same syntactic
>>         construction; only `var' and `class' keywords change.
>>
>>         Dmitry.
>>
>>         _______________________________________________
>>         es-discuss mailing list
>>         es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>>         https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20111117/5ebdd3d3/attachment.html>


More information about the es-discuss mailing list