{-# LANGUAGE RankNTypes, TypeOperators, DefaultSignatures #-} -- | Compare to indexed.Data.Functor.Indexed (IxCopointed) module MHask.Indexed.Copointed where import MHask.Arrow import qualified MHask.Copointed as MHask import qualified MHask.Indexed.Functor as MHask -- | The indexed version of "MHask.Copointed". -- The dual of "MHask.Indexed.Pointed". class (MHask.IxFunctor t) => IxCopointed t where iextract :: (Monad m) => m <~ t i i m default iextract :: (Monad m, MHask.Copointed (t i i)) => m <~ t i i m iextract = MHask.extract