fwiw, my Object.entries proposal (
https://github.com/ljharb/proposal-object-values-entries ) would allow you
to do: `new Map(Object.entries({ a: 'b', b: 'c' }))`.

On Tue, Oct 27, 2015 at 4:36 PM, Alexander Jones <a...@weej.com> wrote:

> I agree this is pretty important. Using actual maps really frees up a lot
> of complexity, but the syntax is cumbersome to say the least.
>
> Whatever the decided syntax, bare words as string keys is a really bad
> idea IMO. The key syntax should be parsed as an expression, like the values
> are, and like they are in basically every other language.
>
> Another outstanding issue is that we might want the syntax for
> `Immutable.Map`, or `WeakMap`, or `MapTwoPointOh` that improves deficiency
> $x, $y and $z. I'd say introducing a special syntax for `Map` right now is
> not ideal.
>
> Rather, we have an opportunity to instead devise a syntax for an abstract
> map. While we're at it, we might as well do the same for an abstract list.
> Why should maps have all the fun?
>
> ```
> const {List: IList, Map: IMap} = Immutable;
> const bar = 43;
> const map = IMap#{"foo": 42, bar: 44};  // keys "foo" and 43
> const list = IList#[4, 5, 6, 7, Map#{map: "why not?"}];  // 5th element is
> a Map with one key, which is the Immutable.Map above
> const weakMap = WeakMap#{map: "It's an Immutable", list: "Also
> Immutable"};  // WeakMap keys are the objects map and list
> ```
>
> It could desugar as, for the sake of example:
>
> ```
> Foo#{key: value, ...}
> ➔
> Foo[Symbol.literalOf]([[key, value], ...][Symbol.iterator]())
> ```
>
> and
>
> ```
> Foo#[value, ...]
> ➔
> Foo[Symbol.literalOf]([value, ...][Symbol.iterator]())
> ```
>
> The nice thing about this is it's extensible and future proofs the
> language a little bit. The actual arrays need not exist if engines choose
> to implement this more efficiently - the syntax just results in an iterator
> which yields the elements of the literal. The only difference between the
> `[]` and the `{}` notation ise that the `{}` notation enforces
> syntactically valid key-value pairs and are a little less heavy on brackets.
>
> I know literally every proposal ever these days seems to claim the `#`
> symbol now, so that's clearly an issue to contend with... :)
>
> Alex
>
>
> On 27 October 2015 at 22:55, Mohsen Azimi <m...@azimi.me> wrote:
>
>> I'm using Maps a lot now and I was thinking why there is no "easy" way of
>> declaring them like objects and arrays.
>>
>> I'm sure I'm not the first one who came up with the idea of having Map
>> literal declaration. There are many ways we can introduce new syntax for
>> declaring Maps via a literal syntax such as:
>>
>> ```
>> let map = [window: 'window', document: 'document'];
>> ```
>> or
>> ```
>> let map = {{window: 'window', document: 'document'}}
>> ```
>> and possibly many more.
>>
>> I searched the discussions  but couldn't find a topic on this. Have you
>> discussed this before?
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to