
On 2017-07-07 12:48 AM, Clinton Mead wrote:
Consider the illustrative code below: ... class MyFunctor f where myFmap :: (forall a. t a -> u a) -> f t -> f u ...
Basically this is a sort of "higher order" functor, but I can't seem to fit it into an ordinary functor.
But it seems like I'm reinventing the wheel, as my code is suspiciously like `Functor` but only slightly different.
Has this sort of class already been created and if so what package is it in?
Yes, I have recently created rank2classes package: http://hackage.haskell.org/package/rank2classes Apart from the mirror-universe Functor class, the package exports the Applicative, Foldable, Traversable, Applicative, and Distributive classes, as well as some Template Hashell to derive some of their instances automatically.