0 | module Control.Comonad.Env.Interface
2 | import Control.Comonad
3 | import Control.Comonad.Env.Env
4 | import Control.Comonad.Store.Store
5 | import Control.Comonad.Traced.Traced
6 | import Control.Comonad.Trans
11 | interface Comonad w => ComonadEnv e w | w where
14 | public export %inline
15 | asks : ComonadEnv e w => (e -> e') -> w a -> e'
18 | public export %inline
19 | lowerAsk : (ComonadEnv e w, ComonadTrans t) => t w a -> e
20 | lowerAsk = ask . lower
26 | public export %inline
27 | Comonad w => ComonadEnv e (EnvT e w) where
30 | public export %inline
31 | ComonadEnv e w => ComonadEnv e (StoreT t w) where
32 | ask = lowerAsk {t = StoreT t}
34 | public export %inline
35 | (ComonadEnv e w, Monoid m) => ComonadEnv e (TracedT m w) where
36 | ask = lowerAsk {t = TracedT m}