0 | module Control.Monad.Free
1 |
2 | public export
3 | interface MonadFree (0 f : Type -> Type) (0 m : Type -> Type) where
4 |   wrap : (Functor f, Monad m) => f (m a) -> m a
5 |
6 | export
7 | liftF : (Functor f, Monad m, MonadFree f m) => f a -> m a
8 | liftF = wrap . map pure
9 |