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 |
Control.Comonad.Coideal
Description
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 #
Methods
coidealExtend :: (Coideal w a -> b) -> w a -> w b Source #
Instances
(ComonadCoideal w, ComonadCoideal v) => ComonadCoideal (w :* v) Source # | |
Defined in Control.Comonad.Coideal |
Constructors
Coideal | |
Fields
|
Instances
Foldable f => Foldable (Coideal f) Source # | |
Defined in Control.Comonad.Coideal Methods 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
newtype Mutual p m n a Source #
Instances
(Bifoldable p, Foldable m, Foldable n) => Foldable (Mutual p m n) Source # | |
Defined in Control.Functor.Internal.Mutual Methods fold :: Monoid m0 => Mutual p m n m0 -> m0 # foldMap :: Monoid m0 => (a -> m0) -> Mutual p m n a -> m0 # foldMap' :: Monoid m0 => (a -> m0) -> Mutual p m n a -> m0 # foldr :: (a -> b -> b) -> b -> Mutual p m n a -> b # foldr' :: (a -> b -> b) -> b -> Mutual p m n a -> b # foldl :: (b -> a -> b) -> b -> Mutual p m n a -> b # foldl' :: (b -> a -> b) -> b -> Mutual p m n a -> b # foldr1 :: (a -> a -> a) -> Mutual p m n a -> a # foldl1 :: (a -> a -> a) -> Mutual p m n a -> a # toList :: Mutual p m n a -> [a] # null :: Mutual p m n a -> Bool # length :: Mutual p m n a -> Int # elem :: Eq a => a -> Mutual p m n a -> Bool # maximum :: Ord a => Mutual p m n a -> a # minimum :: Ord a => Mutual p m n a -> a # | |
(Bitraversable p, Traversable m, Traversable n) => Traversable (Mutual p m n) Source # | |
Defined in Control.Functor.Internal.Mutual Methods traverse :: Applicative f => (a -> f b) -> Mutual p m n a -> f (Mutual p m n b) # sequenceA :: Applicative f => Mutual p m n (f a) -> f (Mutual p m n a) # mapM :: Monad m0 => (a -> m0 b) -> Mutual p m n a -> m0 (Mutual p m n b) # sequence :: Monad m0 => Mutual p m n (m0 a) -> m0 (Mutual p m n a) # | |
(Bifunctor p, Functor m, Functor n) => Functor (Mutual p m n) Source # | |
(Show (m (p a (Mutual p n m a))), Show (n (p a (Mutual p m n a)))) => Show (Mutual p n m a) Source # | |
(Eq (m (p a (Mutual p n m a))), Eq (n (p a (Mutual p m n a)))) => Eq (Mutual p n m a) Source # | |
Coideal Comonad Product
Constructors
CoidealProduct | |
Fields
|
Instances
(Foldable m0, Foldable n0) => Foldable (m0 :* n0) Source # | |
Defined in Control.Comonad.Coideal Methods fold :: Monoid m => (m0 :* n0) m -> m # foldMap :: Monoid m => (a -> m) -> (m0 :* n0) a -> m # foldMap' :: Monoid m => (a -> m) -> (m0 :* n0) a -> m # foldr :: (a -> b -> b) -> b -> (m0 :* n0) a -> b # foldr' :: (a -> b -> b) -> b -> (m0 :* n0) a -> b # foldl :: (b -> a -> b) -> b -> (m0 :* n0) a -> b # foldl' :: (b -> a -> b) -> b -> (m0 :* n0) a -> b # foldr1 :: (a -> a -> a) -> (m0 :* n0) a -> a # foldl1 :: (a -> a -> a) -> (m0 :* n0) a -> a # toList :: (m0 :* n0) a -> [a] # null :: (m0 :* n0) a -> Bool # length :: (m0 :* n0) a -> Int # elem :: Eq a => a -> (m0 :* n0) a -> Bool # maximum :: Ord a => (m0 :* n0) a -> a # minimum :: Ord a => (m0 :* n0) a -> a # | |
(Traversable m0, Traversable n0) => Traversable (m0 :* n0) Source # | |
Defined in Control.Comonad.Coideal | |
(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 #