Portability | non-portable (rank-2 polymorphism) |
---|---|

Stability | experimental |

Maintainer | Edward Kmett <ekmett@gmail.com> |

Traditional operators, shown here to show how to roll your own

- futu :: RunMonadFree f m => GCoalgebra f m a -> a -> FixF f
- g_futu :: (Functor f, RunMonadFree h m) => Dist h f -> GCoalgebra f m a -> a -> FixF f
- postpro_futu :: RunMonadFree f m => GCoalgebra f m a -> (f :~> f) -> a -> FixF f
- g_postpro_futu :: (Functor f, RunMonadFree h m) => Dist h f -> GCoalgebra f m a -> (f :~> f) -> a -> FixF f
- distFutu :: (Functor f, RunMonadFree h m) => Dist h f -> Dist m f

# Documentation

futu :: RunMonadFree f m => GCoalgebra f m a -> a -> FixF fSource

Generalized from `futu :: Functor f => GCoalgebra f (Free f) a -> a -> FixF f`

g_futu :: (Functor f, RunMonadFree h m) => Dist h f -> GCoalgebra f m a -> a -> FixF fSource

postpro_futu :: RunMonadFree f m => GCoalgebra f m a -> (f :~> f) -> a -> FixF fSource

A futumorphic postpromorphism

g_postpro_futu :: (Functor f, RunMonadFree h m) => Dist h f -> GCoalgebra f m a -> (f :~> f) -> a -> FixF fSource

A generalized-futumorphic postpromorphism

distFutu :: (Functor f, RunMonadFree h m) => Dist h f -> Dist m fSource

Turn a distributive law for a functor into a distributive law for the free monad of that functor. This has been generalized to support generating distributive laws for a number of related free-monad-like constructions such as the Codensity monad of the free monad of a functor.