4 comments

[ 3.4 ms ] story [ 23.6 ms ] thread
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.

> You could address this with newtypes but you’d lose expressivity and performance.

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

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.
Interesting. I don't have any evidence either way!