3 ms·
Lens has this: e & lbl .~ value It's not an in-place update like `e.lbl = value`.
by garethrowlands 6y ago
Lens has this:
e & lbl .~ value
It's not an in-place update like `e.lbl = value`.
- srtjstjsj 6y agoThat doesn't solve GP's problem of "not looking exactly like C++/Java/Python"
- pbiggar 6y agoMy goal isn't to look _exactly_ like C++/etc, but rather to have a fairly natural duality between read and write. You can read with: a.b.c.d but a write is: let a = {a with b = { a.b with c = { a.b.c with d = 5 } } } } which is much much more verbose than the OO/imperative: a.b.c.d = 5
- kqr 6y agoYeah, lenses let you do a & b.c.d .~ 5 To construct a new version of `a` where those nested fields have the new value 5. Or for an in-place update in a context where that is allowed, a.b.c.d .= 5 The lens concept is incredibly nice.