Copyright | (C) 2008 Edward Kmett (C) 2024 Koji Miyazato |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Koji Miyazato <viercc@gmail.com> |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Synopsis
- class Functor w => ComonadCoideal w where
- coidealExtend :: (Coideal w a -> b) -> w a -> w b
- newtype Coideal f a = Coideal {
- runCoideal :: (a, f a)
- buildCoideal :: (a -> w a) -> a -> Coideal w a
- newtype Mutual p m n a = Mutual {}
- newtype (w :* v) a = CoidealProduct {
- runCoidealProduct :: (Mutual (,) w v a, Mutual (,) v w a)
- project1 :: Functor w => (w :* v) a -> w a
- project2 :: Functor v => (w :* v) a -> v a
- (&&&&) :: ComonadCoideal s => (forall a. s a -> w a) -> (forall a. s a -> v a) -> s b -> (w :* v) b
Coideal Comonads
class Functor w => ComonadCoideal w where Source #
coidealExtend :: (Coideal w a -> b) -> w a -> w b Source #
Instances
(ComonadCoideal w, ComonadCoideal v) => ComonadCoideal (w :* v) Source # | |
Defined in Control.Comonad.Coideal |
Coideal | |
|
Instances
Foldable f => Foldable (Coideal f) Source # | |
Defined in Control.Comonad.Coideal fold :: Monoid m => Coideal f m -> m # foldMap :: Monoid m => (a -> m) -> Coideal f a -> m # foldMap' :: Monoid m => (a -> m) -> Coideal f a -> m # foldr :: (a -> b -> b) -> b -> Coideal f a -> b # foldr' :: (a -> b -> b) -> b -> Coideal f a -> b # foldl :: (b -> a -> b) -> b -> Coideal f a -> b # foldl' :: (b -> a -> b) -> b -> Coideal f a -> b # foldr1 :: (a -> a -> a) -> Coideal f a -> a # foldl1 :: (a -> a -> a) -> Coideal f a -> a # toList :: Coideal f a -> [a] # length :: Coideal f a -> Int # elem :: Eq a => a -> Coideal f a -> Bool # maximum :: Ord a => Coideal f a -> a # minimum :: Ord a => Coideal f a -> a # | |
Traversable f => Traversable (Coideal f) Source # | |
Defined in Control.Comonad.Coideal | |
Functor f => Functor (Coideal f) Source # | |
ComonadCoideal w => Comonad (Coideal w) Source # | |
buildCoideal :: (a -> w a) -> a -> Coideal w a Source #
Mutual recursion for (co)ideal (co)monad (co)products
Coideal Comonad Product
CoidealProduct | |
|
Instances
(Functor w, Functor v) => Functor (w :* v) Source # | |
(ComonadCoideal w, ComonadCoideal v) => ComonadCoideal (w :* v) Source # | |
Defined in Control.Comonad.Coideal | |
(Show (m0 (a, Mutual (,) n0 m0 a)), Show (n0 (a, Mutual (,) m0 n0 a))) => Show ((m0 :* n0) a) Source # | |
(Eq (m0 (a, Mutual (,) n0 m0 a)), Eq (n0 (a, Mutual (,) m0 n0 a))) => Eq ((m0 :* n0) a) Source # | |
(&&&&) :: ComonadCoideal s => (forall a. s a -> w a) -> (forall a. s a -> v a) -> s b -> (w :* v) b Source #