@@ -4,6 +4,7 @@ import Prelude
44
55import Control.Alt (class Alt )
66import Control.Alternative (class Alternative )
7+ import Control.Comonad (class Comonad , class Extend , extend , extract )
78import Control.Monad.Cont.Class (class MonadCont )
89import Control.Monad.Error.Class (class MonadError , class MonadThrow )
910import Control.Monad.Reader.Class (class MonadAsk , class MonadReader )
@@ -15,9 +16,9 @@ import Control.MonadPlus (class MonadPlus)
1516import Control.Plus (class Plus )
1617import Data.Eq (class Eq1 )
1718import Data.Foldable (class Foldable )
18- import Data.Traversable (class Traversable )
1919import Data.Newtype (class Newtype )
2020import Data.Ord (class Ord1 )
21+ import Data.Traversable (class Traversable )
2122import Effect.Class (class MonadEffect )
2223
2324-- | The `IdentityT` monad transformer.
@@ -67,3 +68,9 @@ derive newtype instance monadTellIdentityT :: MonadTell w m => MonadTell w (Iden
6768derive newtype instance monadWriterIdentityT :: MonadWriter w m => MonadWriter w (IdentityT m )
6869derive newtype instance foldableIdentityT :: Foldable m => Foldable (IdentityT m )
6970derive newtype instance traversableIdentityT :: Traversable m => Traversable (IdentityT m )
71+
72+ instance extendIdentityI :: Extend w => Extend (IdentityT w ) where
73+ extend f (IdentityT m) = IdentityT (extend (f <<< IdentityT ) m)
74+
75+ instance comonadIdentityT :: Comonad w => Comonad (IdentityT w ) where
76+ extract = extract <<< runIdentityT
0 commit comments