Swift style syntax

Bob Myers rtm at gol.com
Sat Oct 17 04:24:08 UTC 2015


What has been the discussion if any about having "standard" libraries, with
well-defined behavior and included in the engine, but which must be
imported to use to avoid collisions and backward incompatibility? In theory
the import could also result in new methods on standard prototypes.  Eg

```js
import 'std::Functional';
var _add = ((a, b) => a + b).currify();

import * as Fn from 'std::Functional';
var _add = Fn.currify((a, b) => a + b));

import currify from 'std::Functional';
var _add = currify((a, b) => a + b));
```

This approach could also possibly be used for `Op`.

--
Bob

On Sat, Oct 17, 2015 at 2:17 AM, Michael McGlothlin <
mike.mcglothlin at gmail.com> wrote:

> Having Op for all operator functions would be a good call. Probably better
> than adding Bitwise, Logic, etc just from the point of view of not filling
> up the namespace to much. I think short names would be fine so long as they
> were readable. So leftShift could be lShift but lsh is probably to
> mysterious. Even operator-like functions without an actual operator
> assigned would make sense I think so no reason not to include pow. A
> general purpose casting operator/func would be good I think but not sure if
> there is a point to specialized ones just to numbers, strings, and whatnot.
>
> On Fri, Oct 16, 2015 at 2:39 PM, Isiah Meadows <isiahmeadows at gmail.com>
> wrote:
>
>> That might work, although these two might need edited for consistency:
>>
>> - Math.pow === Op.pow (assuming `**` gets in)
>> - Op.num should be similar to `x => +x`, not `x => ToNumber(x)`. The
>> behavior is slightly different, but can be observable without modifying
>> `Number`, I believe.
>>
>> On Fri, Oct 16, 2015, 14:43 Tab Atkins Jr. <jackalmage at gmail.com> wrote:
>>
>>> On Thu, Oct 15, 2015 at 11:12 PM, Isiah Meadows <isiahmeadows at gmail.com>
>>> wrote:
>>> > I like the idea, but could the function names be made a little
>>> > shorter? I'd like to at least save some characters on it. Example:
>>> > `(a, b) => a > b` is 15 characters, where `Math.greaterThan` is 16.
>>> >
>>> > For comparison, I also have equivalent versions for the colon-preceded
>>> operators
>>> >
>>> > Here's some naming ideas I have:
>>> [snip]
>>>
>>> At that point, though, the use of the Math namespace starts getting
>>> weird.  Equality and Logical aren't mathematical; Bitwise mostly isn't
>>> either.  (It can sometimes be used to do mathy things, like using
>>> shift to mul/div by a power of 2, but that's not its core purpose.)
>>>
>>> Put them on a new Op namespace object, or into an Op built-in module.
>>> Even shorter, and clearer!
>>>
>>> ~TJ
>>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> es-discuss mailing list
> 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/20151017/1b0baab3/attachment.html>


More information about the es-discuss mailing list