I think I disagree with the author about what the problems with lens are in Haskell. In particular, I think the performance is much better than represented. (Assuming you do everything right… but that’s a whole different problem.) Its also powerful in a way a getter or setter syntax will never be.
I think the real problem with lens is: the type errors you get are completely unworkable. You could address this with newtypes but you’d lose expressivity and performance. Basically lens is at the bleeding edge of what a functional compiler can cope with.
It’d be an interesting research problem to see if this can be fixed.
I could be wrong (It's a common occurrence!), but I thought a lot of the lens perf relied on inlining that isn't as easy to pull off with a newtype/profunctor design. Can't find any references for performance comparisons.
4 comments
[ 3.4 ms ] story [ 23.6 ms ] threadI think the real problem with lens is: the type errors you get are completely unworkable. You could address this with newtypes but you’d lose expressivity and performance. Basically lens is at the bleeding edge of what a functional compiler can cope with.
It’d be an interesting research problem to see if this can be fixed.
optics uses newtypes. It loses infinitesimally in expressivity and not at all in performance, as far as I am aware. What were you thinking of?
https://hackage.haskell.org/package/optics