
On Fri, 2022-06-17 at 16:19 +0100, Dan Dart wrote:
Is there prior art to the following generalisation?
Hello, that reminds me of a Profunctor - you could manipulate via Profunctor, since all arrows are Profunctors via a WrappedArrow newtype. Maybe Strong too? I forget which way round those go.
Cheers
Aha - profunctors weren't on my map, thanks for pointing me to it. So the desired arrows r -> a -> m b could be expressed as Cayley ((->) r) (Kleisli m) a b with module Data.Profunctor.Traversing defining the desired traversal. Further the implementation seems considerably simpler than the arrow implementation, as the latter uses currying, flipping etc. The only downside is that profunctors has heavier dependencies than arrows. Hooray Haskell Café! Olaf