However there exists perfectly good solutions inside of JS with Object.seal & Object.freeze.
Actually these solutions are very bad for immutable data structures, because creating deep copy of object on every modification cause very significant overhead. This overhead can be significant even in optimized Haskell implementations (link <https://wiki.haskell.org/GHC/Memory_Management>) and for imperative languages it's even worser. Immutable.js use many of tricks to avoid deep copying. On Mon, Jul 17, 2017 at 10:51 AM, Keith Cirkel <[email protected]> wrote: > As functional programming because more mainstream - developers are leaning > more and more on immutability - with tools like immutable.js. However there > exists perfectly good solutions inside of JS with Object.seal & > Object.freeze. > > I propose making a short syntax to allow for creating of sealed/frozen > objects that looks like this: > > ```js > {| foo: 1 |} // same as Object.seal({ foo: 1 }) > {# foo: 1 #} // same as Object.freeze({ foo: 1 }) > > [| 1, 2, 3 |] // same as Object.seal([ 1, 2, 3 ]) > [# 1, 2, 3 #] // same as Object.freeze([ 1, 2, 3 ]) > > // Deep frozen objects becomes a case of using frozen notation all the way > down: > {# foo: {# bar: 1 #} #} // same as Object.freeze({ foo: Object.freeze({ > bar: 1 }) }) > [# [# 1, 2 #], [# 3, 4 #] #] // same as Object.freeze([Object.freeze([1,2]), > Object.freeze([3, 4]]) > ``` > > This short syntax allows for a much more expressive way of writing/reading > sealed & frozen objects. I look forward to a discussion about this. > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

