{-# LANGUAGE TypeOperators #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE DefaultSignatures #-} -- Compare to indexed.Data.Functor.Indexed (IxPointed) module MHask.Indexed.Pointed where import MHask.Util import Control.Monad.Trans.State import Control.Monad.Trans.Reader import Control.Monad.Trans.Writer import qualified MHask.Pointed as MHask import qualified MHask.Indexed.Functor as MHask class (MHask.IxFunctor t) => IxPointed t where ireturn :: (Monad m, Monad (t i i m)) => m ~> t i i m default ireturn :: (Monad m, Monad (t i i m), MHask.Pointed (t i i)) => m ~> t i i m ireturn = MHask.return