Hacker News new | ask | show | jobs
by johnfn 349 days ago
immer.js allows you to do foo.bar.baz = 1 without side effects.
1 comments

Thanks, I just took a look. It works by relaxing constraints to allow mutation on a “draft” copy of the data. Interesting idea! (But verboten in Haskell, of course.)
But there's nothing 'verboten' about this in Haskell! Haskell could allow for the exact same syntax, and do the exact same thing behind the scenes. Oh but no, LENSES of course, you must rewrite obvious code in the most obtuse manner possible. :)
Unlike JavaScript, it would require fundamental changes to the language itself, so I don’t think it’s really a fair comparison.
But lenses already do the same thing, just with a worse syntax. do notation already rewrites a lot of messy Haskell into cleaner Haskell. It's not that different!