Skip to content

Commit cea6d90

Browse files
authored
Merge pull request #107 from colin-passiv/master
add ComonadStore instances for EnvT and TracedT
2 parents be1de05 + b28c098 commit cea6d90

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/Control/Comonad/Store/Class.purs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,14 @@ module Control.Comonad.Store.Class where
55
import Prelude
66

77
import Control.Comonad (class Comonad, extract)
8+
import Control.Comonad.Env.Trans (EnvT)
89
import Control.Comonad.Store.Trans (StoreT(..))
10+
import Control.Comonad.Traced.Trans (TracedT)
11+
import Control.Comonad.Trans.Class (lower)
912
import Control.Extend (duplicate)
1013

1114
import Data.Tuple (Tuple(..))
15+
import Data.Monoid (class Monoid)
1216

1317
-- | The `ComonadStore` type class represents those monads which support local position information via
1418
-- | `pos` and `peek`.
@@ -52,3 +56,11 @@ seeks f = peeks f <<< duplicate
5256
instance comonadStoreStoreT :: Comonad w => ComonadStore s (StoreT s w) where
5357
pos (StoreT (Tuple f s)) = s
5458
peek s (StoreT (Tuple f _)) = extract f s
59+
60+
instance comonadStoreEnvT :: ComonadStore s w => ComonadStore s (EnvT e w) where
61+
pos = pos <<< lower
62+
peek s = peek s <<< lower
63+
64+
instance comonadStoreTracedT :: (ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w) where
65+
pos = pos <<< lower
66+
peek s = peek s <<< lower

0 commit comments

Comments
 (0)