HaxeFoundation / haxe-evolution

Repository for maintaining proposal for changes to the Haxe programming language
111 stars 57 forks source link

EcmaScript 4 syntax #106

Open hydroper opened 1 year ago

hydroper commented 1 year ago

Haxe has some subtle differences from TypeScript and EcmaScript 4 (inexistent) syntax.

More specifically, in these languages, type is reserved when it's followed or preceded by another identifier or reserved word, so it doesn't break compatibility.

Here's a Haxe version:

var a:Array<Dynamic> = [];

typedef DoublePrecisionFloatingPoint = Float;

Here's an EcmaScript 4 version:

var a:[*] = [];

type DoublePrecisionFloatingPoint = Number;

I think it'd be interesting if Haxe supported the same ES4 syntax for clarity, considering it'd not break compatibility. It doesn't break macros, does it? After all, Haxe was inspired by ES4.

Another thing I didn't mention is that the decorator syntax of ES4 used brackets, not @:.

back2dos commented 1 year ago

I think supporting a multitude of styles from various languages in Haxe will mostly create confusion, but more importantly create obstacles for when we do want to add new syntax with new semantics, e.g. the * for a type param could mean a whole bunch of things other than Dynamic that might have distinct use cases.

I see some value in supporting ECMAScript syntax. The advantages of using standardized syntax are quite obvious and Haxe did start out being advertised ECMAScript dialect. It diverged from its heritage for a whole bunch of good reasons, but there's been a whole lot of parallel evolution, where there's little value in Haxe having a different syntax than ES/TS do. If anything, I think a separate frontend for an ECMAScript aligned syntax would actually be relatively useful, but I don't see the work involved (especially with IDE support) paying off.