News for hackers. Stuff that matters.
Re:Why Elm? [pdf] by pygy_ on Monday May 08, 2017 @04:26PM (#14295282)
A lens is an object that has both read and write access to a property of an object (or to a path into a tree of nested objects).

Rather than passing parts of the model to the children (as you'd do with React props), you pass lenses into said parts.

It enables child components to read/write to the global store without knowing its structure. As long as it receives an appropriate (set of) lens(es) it is happy.

So, for example, if you have a list of strings, rather than passing the nth string to the nth component, you'd pass a lens to the nth string. The component can then not only read but also write to its slot.

Lenses can also be composed, so you can create them on the go as you'd pass sub-props to grand-children.

https://github.com/calmm-js/partial.lenses <= a comprehensive lens library

http://ramdajs.com/ also has lenses.

These libs are strongly influenced by the FP world. The underlying data structures are immutable, writing to a lens creates a new version of the store (as efficiently as possible, by recycling intact objects).

Re:Why Elm? [pdf] by charlieflowers on Monday May 08, 2017 @09:07PM (#14296978)
So basically, it's like using dependency injection, and what you're injecting are higher order functions for the getters and setters for whatever properties you need. Is that right?
Re:Why Elm? [pdf] by harperlee on Tuesday May 09, 2017 @01:46AM (#14297979)
Do they need to be functions? Because this seems a lot like handling [:a :keyword :vector :for :navigating :trees] in Clojure and passing it to either update-in or get-in functions, which is a pattern ubiquitous in re-frame, but not sure is can be called a lens).
Re:Why Elm? [pdf] by charlieflowers on Tuesday May 09, 2017 @04:01PM (#14303335)
What you're saying sounds similar. But my question and your post are both missing the "composition" aspect. Somehow lenses are composable, and I guess to grok that we'd need to look deeper.
Re:Why Elm? [pdf] by pygy_ on Tuesday May 09, 2017 @03:27AM (#14298311)
Sounds about right.
Re:Why Elm? [pdf] by KirinDave on Tuesday May 09, 2017 @10:36AM (#14300344)
PureScript's thermite is what I had in mind, but yeah this is good.
Re:Why Elm? [pdf] by colordrops on Monday May 08, 2017 @04:56PM (#14295512)
Thank you.