Re: Non-agression pact for the JS runtime namespace territory

Le 19/08/2013 00:44, Jake Verbaten a écrit :
> Why can't we just avoid namespace collisions completely using our 
> module system
>
> ```js
> import { find, findIndex } from "@array";
>
> var res = find([1, 2, 3], (n) => return n === 2)
> ```
We don't even need modules. Underscore is already this that with success [1]
The "problem" is that people want to do [1,2,3].find( n => n === 2 )

> If necessary we
we "TC39"?
a non-standard extension for things like TypeScript?

> can have syntax sugar for importing symbol methods instead of 
> functions. Or maybe implement the syntax sugar as some kind of infix 
> function call operator so you can call functions as if they are methods
>
> `[1, 2, 3]@find((n) => return n === 2)`
The definition of x@y(...args) is y.call(x, ...args) right? That's an 
interesting idea. This very syntax seems to collide with relationships 
[2], but maybe another syntax could work.

But I am skeptical of any idea that requires adding syntax to the 
language, because it pushes further in time the solution.
And since a library author can't force every library user to use a given 
tool (transpiler), I'm afraid library authors will prefer defining 
things on Array.prototype directly so everyone can use them right away.

David

[1] http://underscorejs.org/#find
[2] http://wiki.ecmascript.org/doku.php?id=strawman:relationships

Ps : totally unimportant, but "(n) => return n === 2" is a syntax error. 
I think the form without brackets need the RHS to be and expression and 
"return something" is a statement or something like that.

Received on Sunday, 18 August 2013 23:04:21 UTC