I was wondering if there is any method you can add in Traversableto make it cheaper in the presence of expensive functors. The inspiration was Control.Lens.Traversal.confusingthat uses a special Applicativeone to do something like that.
confusing :: Applicative f => LensLike (Curried (Yoneda f) (Yoneda f)) s t a b -> LensLike f s t a b
Unfortunately, it confusingreally matches its name - I don’t understand what it actually does. In particular, I have no intuition about Curried.
It also confusinghas the aroma of CPS, which suggests that it is too strict for my purpose. Yonedacan be swapped on Coyonedato increase laziness, but I have no idea what to do with Curried.
source
share