How would this work when the getter lives on a prototype? (like most
builtin getters) Would it install the memoized value on `this`, or on the
object that contains the getter? Would it use [[Set]] or [[Define]]?

On Tue, Jun 12, 2018 at 12:13 AM, Aadit M Shah <aaditms...@fastmail.fm>
wrote:

> Hello TC39,
>
> I recently opened an issue <https://github.com/tc39/ecma262/issues/1223> in
> the tc39/ecma262 <https://github.com/tc39/ecma262> repository, proposing
> a new syntax for lazy getters, and I was directed to the CONTRIBUTING
> <https://github.com/tc39/ecma262/blob/master/CONTRIBUTING.md> page which
> stated that I should start a conversation on this mailing list.
>
> So, my feature proposal is to have syntactic sugar for creating lazy
> getters
> <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get#Smart_self-overwriting_lazy_getters>.
> To summarize my original proposal (which you can read by following the very
> first link above), I find that creating lazy getters is very verbose. For
> example, consider:
>
> const take = (n, xs) => n === 0 ? null : xs && {
>     head: xs.head,
>     get tail() {
>         delete this.tail;
>         return this.tail = take(n - 1, xs.tail);
>     }
> };
>
> My proposed solution is to add a new keyword lazy to the language. This
> keyword can only be used as a prefix to longhand property names in object
> initializers, and it defers the execution of the value expression until the
> property is accessed. In short, it's just syntactic sugar for lazy getters:
>
> const take = (n, xs) => n === 0 ? null : xs && {
>     head: xs.head,
>     lazy tail: take(n - 1, xs.tail)
> };
>
> This is purely syntactic sugar. The semantics of this new syntax would
> remain the same as that of the desugared syntax. In particular, calling
> Object.getOwnPropertyDescriptor(list, "tail") would return an accessor
> descriptor before accessing list.tail and a data descriptor afterwards.
>
> Furthermore, there are other advantages of having this syntactic sugar.
> For example, creating cyclic data structures becomes much easier. Examples
> are provided in my original proposal which is linked above. Hope to hear
> your thoughts on this.
>
> Regards,
> Aadit M Shah
>
> _______________________________________________
> 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