Понимание путаницы
Я думал о том, есть ли какой-нибудь метод, который может быть добавлен к Traversable
чтобы сделать его дешевле в присутствии дорогих функторов. Вдохновение было Control.Lens.Traversal.confusing
, который использует специальный Applicative
сделать что-то подобное.
confusing :: Applicative f => LensLike (Curried (Yoneda f) (Yoneda f)) s t a b -> LensLike f s t a b
К несчастью, confusing
действительно оправдывает свое имя - я не понимаю, что он на самом деле делает. В частности, у меня нет интуиции о Curried
,
Более того, confusing
имеет CPS-вкус, что говорит о том, что он, вероятно, слишком строг для моей цели. Yoneda
можно обменять на Coyoneda
чтобы увеличить лень, но я понятия не имею, что делать с Curried
,