monad-ideals-0.1.0.0: Ideal Monads and coproduct of them
Copyright(C) 2008 Edward Kmett (C) 2024 Koji Miyazato
LicenseBSD-style (see the file LICENSE)
MaintainerKoji Miyazato <viercc@gmail.com>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Comonad.Coideal

Description

 
Synopsis

Coideal Comonads

class Functor w => ComonadCoideal w where Source #

Methods

coidealExtend :: (Coideal w a -> b) -> w a -> w b Source #

Instances

Instances details
(ComonadCoideal w, ComonadCoideal v) => ComonadCoideal (w :* v) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

coidealExtend :: (Coideal (w :* v) a -> b) -> (w :* v) a -> (w :* v) b Source #

newtype Coideal f a Source #

Constructors

Coideal 

Fields

Instances

Instances details
Foldable f => Foldable (Coideal f) Source # 
Instance details

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] #

null :: Coideal f a -> Bool #

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 #

sum :: Num a => Coideal f a -> a #

product :: Num a => Coideal f a -> a #

Traversable f => Traversable (Coideal f) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Coideal f a -> f0 (Coideal f b) #

sequenceA :: Applicative f0 => Coideal f (f0 a) -> f0 (Coideal f a) #

mapM :: Monad m => (a -> m b) -> Coideal f a -> m (Coideal f b) #

sequence :: Monad m => Coideal f (m a) -> m (Coideal f a) #

Functor f => Functor (Coideal f) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

fmap :: (a -> b) -> Coideal f a -> Coideal f b #

(<$) :: a -> Coideal f b -> Coideal f a #

ComonadCoideal w => Comonad (Coideal w) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

extract :: Coideal w a -> a #

duplicate :: Coideal w a -> Coideal w (Coideal w a) #

extend :: (Coideal w a -> b) -> Coideal w a -> Coideal w b #

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 #

Constructors

Mutual 

Fields

Instances

Instances details
(Bifunctor p, Functor m, Functor n) => Functor (Mutual p m n) Source # 
Instance details

Defined in Control.Functor.Internal.Mutual

Methods

fmap :: (a -> b) -> Mutual p m n a -> Mutual p m n b #

(<$) :: a -> Mutual p m n b -> Mutual p m n a #

(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 # 
Instance details

Defined in Control.Functor.Internal.Mutual

Methods

showsPrec :: Int -> Mutual p n m a -> ShowS #

show :: Mutual p n m a -> String #

showList :: [Mutual p n m a] -> ShowS #

(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 # 
Instance details

Defined in Control.Functor.Internal.Mutual

Methods

(==) :: Mutual p n m a -> Mutual p n m a -> Bool #

(/=) :: Mutual p n m a -> Mutual p n m a -> Bool #

Coideal Comonad Product

newtype (w :* v) a Source #

Constructors

CoidealProduct 

Fields

Instances

Instances details
(Functor w, Functor v) => Functor (w :* v) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

fmap :: (a -> b) -> (w :* v) a -> (w :* v) b #

(<$) :: a -> (w :* v) b -> (w :* v) a #

(ComonadCoideal w, ComonadCoideal v) => ComonadCoideal (w :* v) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

coidealExtend :: (Coideal (w :* v) a -> b) -> (w :* v) a -> (w :* v) b Source #

(Show (m0 (a, Mutual (,) n0 m0 a)), Show (n0 (a, Mutual (,) m0 n0 a))) => Show ((m0 :* n0) a) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

showsPrec :: Int -> (m0 :* n0) a -> ShowS #

show :: (m0 :* n0) a -> String #

showList :: [(m0 :* n0) a] -> ShowS #

(Eq (m0 (a, Mutual (,) n0 m0 a)), Eq (n0 (a, Mutual (,) m0 n0 a))) => Eq ((m0 :* n0) a) Source # 
Instance details

Defined in Control.Comonad.Coideal

Methods

(==) :: (m0 :* n0) a -> (m0 :* n0) a -> Bool #

(/=) :: (m0 :* n0) a -> (m0 :* n0) a -> Bool #

project1 :: Functor w => (w :* v) a -> w a Source #

project2 :: Functor v => (w :* v) a -> v a Source #

(&&&&) :: ComonadCoideal s => (forall a. s a -> w a) -> (forall a. s a -> v a) -> s b -> (w :* v) b Source #