-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Categorical types and classes -- -- Categorical types and classes @package category @version 0.2.3.0 module Control.Category.Groupoid -- | Category where every morphism is iso -- -- Laws: -- --
--   id = f . invert f
--   id = invert f . f
--   
class Category k => Groupoid k invert :: Groupoid k => k a b -> k b a module Data.Morphism.Endo newtype Endo s a Endo :: s a a -> Endo s a [endo] :: Endo s a -> s a a instance forall k (s :: k -> k -> *) (a :: k). Control.Category.Category s => GHC.Base.Semigroup (Data.Morphism.Endo.Endo s a) instance forall k (s :: k -> k -> *) (a :: k). Control.Category.Category s => GHC.Base.Monoid (Data.Morphism.Endo.Endo s a) instance forall k (s :: k -> k -> *) (a :: k). Control.Category.Groupoid.Groupoid s => Algebra.Group (Data.Morphism.Endo.Endo s a) module Control.Category.Dual newtype Dual k a b Dual :: k b a -> Dual k a b [dual] :: Dual k a b -> k b a instance forall k1 k2 (k3 :: k2 -> k1 -> *) (a :: k1) (b :: k2). Algebra.Group (k3 b a) => Algebra.Group (Control.Category.Dual.Dual k3 a b) instance forall k1 k2 (k3 :: k2 -> k1 -> *) (a :: k1) (b :: k2). GHC.Base.Monoid (k3 b a) => GHC.Base.Monoid (Control.Category.Dual.Dual k3 a b) instance forall k1 k2 (k3 :: k2 -> k1 -> *) (a :: k1) (b :: k2). GHC.Base.Semigroup (k3 b a) => GHC.Base.Semigroup (Control.Category.Dual.Dual k3 a b) instance forall k1 (k2 :: k1 -> k1 -> *). Control.Category.Category k2 => Control.Category.Category (Control.Category.Dual.Dual k2) instance forall k1 (k2 :: k1 -> k1 -> *). Control.Category.Groupoid.Groupoid k2 => Control.Category.Groupoid.Groupoid (Control.Category.Dual.Dual k2) module Control.Category.Const2 -- | Notes: Const2 '()' is the indiscrete category. newtype Const2 a b c Const2 :: a -> Const2 a b c instance forall a k1 (b :: k1) k2 (c :: k2). Algebra.Group a => Algebra.Group (Control.Category.Const2.Const2 a b c) instance forall a k1 (b :: k1) k2 (c :: k2). GHC.Base.Monoid a => GHC.Base.Monoid (Control.Category.Const2.Const2 a b c) instance forall a k1 (b :: k1) k2 (c :: k2). GHC.Base.Semigroup a => GHC.Base.Semigroup (Control.Category.Const2.Const2 a b c) instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => Control.Category.Category (Control.Category.Const2.Const2 a) instance (GHC.Base.Semigroup a, Algebra.Group a) => Control.Category.Groupoid.Groupoid (Control.Category.Const2.Const2 a) module Control.Categorical.Functor -- | Laws: -- --
--   map id = id
--   map (f . g) = map f . map g
--   
class (Category s, Category t) => Functor (s :: α -> α -> *) (t :: β -> β -> *) (f :: α -> β) map :: Functor s t f => s a b -> t (f a) (f b) -- | Deprecated: Use Endofunctor type EndoFunctor s = Functor s s type Endofunctor s = Functor s s (<$>) :: Functor s (->) f => s a b -> f a -> f b infixl 4 <$> newtype NT s f g NT :: (forall a. s (f a) (g a)) -> NT s f g [nt] :: NT s f g -> forall a. s (f a) (g a) instance forall k1 k2 (s :: k2 -> k2 -> *). Control.Category.Category s => Control.Category.Category (Control.Categorical.Functor.NT s) instance forall k1 k2 (s :: k2 -> k2 -> *). Control.Category.Groupoid.Groupoid s => Control.Category.Groupoid.Groupoid (Control.Categorical.Functor.NT s) instance forall k1 k2 (s :: k2 -> k2 -> *) (f :: k2 -> *). Control.Categorical.Functor.Functor s (->) f => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT s) (Control.Categorical.Functor.NT (->)) (Data.Functor.Compose.Compose f) instance Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (Control.Categorical.Functor.NT (->))) Data.Functor.Compose.Compose instance forall k (f :: k -> *). Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Data.Functor.Sum.Sum f) instance Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (Control.Categorical.Functor.NT (->))) Data.Functor.Sum.Sum instance forall k (f :: k -> *). Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Data.Functor.Product.Product f) instance Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (Control.Categorical.Functor.NT (->))) Data.Functor.Product.Product instance Control.Categorical.Functor.Functor (->) (Control.Categorical.Functor.NT (->)) Data.Functor.Const.Const instance Control.Categorical.Functor.Functor (->) (Control.Categorical.Functor.NT (->)) (,) instance Control.Categorical.Functor.Functor (->) (Control.Categorical.Functor.NT (->)) Data.Either.Either instance forall k (s :: k -> k -> *). Control.Category.Category s => Control.Categorical.Functor.Functor (Control.Category.Dual.Dual s) (Control.Categorical.Functor.NT (->)) s instance GHC.Base.Functor f => Control.Categorical.Functor.Functor (->) (->) f instance forall k (s :: k -> k -> *) (f :: k -> *) (g :: k -> *). (Control.Categorical.Functor.Functor s (->) f, Control.Categorical.Functor.Functor s (->) g) => Control.Categorical.Functor.Functor s (->) (Data.Functor.Sum.Sum f g) instance forall k (s :: k -> k -> *) (f :: k -> *) (g :: k -> *). (Control.Categorical.Functor.Functor s (->) f, Control.Categorical.Functor.Functor s (->) g) => Control.Categorical.Functor.Functor s (->) (Data.Functor.Product.Product f g) instance forall α (s :: α -> α -> *) a. Control.Category.Category s => Control.Categorical.Functor.Functor s (->) (Data.Functor.Const.Const a) instance Control.Categorical.Functor.Functor (->) (->) Data.Functor.Identity.Identity instance forall α (s :: α -> α -> *). Control.Category.Category s => Control.Categorical.Functor.Functor s (->) Data.Proxy.Proxy instance Control.Categorical.Functor.Functor (->) (->) ((,) a) instance Control.Categorical.Functor.Functor (->) (->) (Data.Either.Either a) instance forall α (s :: α -> α -> *) (a :: α). Control.Category.Category s => Control.Categorical.Functor.Functor s (->) (s a) instance forall β α (s :: α -> α -> *) (t :: β -> β -> *) (f :: α -> β). Control.Categorical.Functor.Functor s t f => Control.Categorical.Functor.Functor (Control.Category.Dual.Dual s) (Control.Category.Dual.Dual t) f module Data.Morphism.Iso data Iso s a b Iso :: s a b -> s b a -> Iso s a b instance forall k (s :: k -> k -> *) (a :: k) (b :: k). (GHC.Base.Semigroup (s a b), GHC.Base.Semigroup (s b a)) => GHC.Base.Semigroup (Data.Morphism.Iso.Iso s a b) instance forall k (s :: k -> k -> *) (a :: k) (b :: k). (GHC.Base.Semigroup (s a b), GHC.Base.Semigroup (s b a), GHC.Base.Monoid (s a b), GHC.Base.Monoid (s b a)) => GHC.Base.Monoid (Data.Morphism.Iso.Iso s a b) instance forall k (s :: k -> k -> *) (a :: k) (b :: k). (GHC.Base.Semigroup (s a b), GHC.Base.Semigroup (s b a), Algebra.Group (s a b), Algebra.Group (s b a)) => Algebra.Group (Data.Morphism.Iso.Iso s a b) instance forall k (s :: k -> k -> *). Control.Category.Category s => Control.Category.Category (Data.Morphism.Iso.Iso s) instance forall k (s :: k -> k -> *). Control.Category.Category s => Control.Category.Groupoid.Groupoid (Data.Morphism.Iso.Iso s) instance forall β α (s :: α -> α -> *) (t :: β -> β -> *) (f :: α -> β). Control.Categorical.Functor.Functor s t f => Control.Categorical.Functor.Functor (Data.Morphism.Iso.Iso s) t f instance forall β α (s :: α -> α -> *) (t :: β -> β -> *) (f :: α -> β). Control.Categorical.Functor.Functor s t f => Control.Categorical.Functor.Functor (Data.Morphism.Iso.Iso s) (Control.Category.Dual.Dual t) f module Control.Categorical.Monad class Endofunctor s m => Monad s m unit :: Monad s m => a `s` m a join :: Monad s m => m (m a) `s` m a bind :: Monad s m => (a `s` m b) -> m a `s` m b (<=<) :: Monad s m => (b `s` m c) -> (a `s` m b) -> a `s` m c infixr 1 <=< (>=>) :: Monad s m => (a `s` m b) -> (b `s` m c) -> a `s` m c infixr 1 >=> newtype Kleisli s m a b Kleisli :: (a `s` m b) -> Kleisli s m a b [kleisli] :: Kleisli s m a b -> a `s` m b class Endofunctor s ɯ => Comonad s ɯ counit :: Comonad s ɯ => ɯ a `s` a cut :: Comonad s ɯ => ɯ a `s` ɯ (ɯ a) cobind :: Comonad s ɯ => (ɯ a `s` b) -> ɯ a `s` ɯ b (=<=) :: Comonad s ɯ => (ɯ b `s` c) -> (ɯ a `s` b) -> ɯ a `s` c infixr 1 =<= (=>=) :: Comonad s ɯ => (ɯ a `s` b) -> (ɯ b `s` c) -> ɯ a `s` c infixr 1 =>= newtype Cokleisli s ɯ a b Cokleisli :: (ɯ a `s` b) -> Cokleisli s ɯ a b [cokleisli] :: Cokleisli s ɯ a b -> ɯ a `s` b instance forall k (s :: k -> k -> *) (ɯ :: k -> k). Control.Categorical.Monad.Comonad s ɯ => Control.Category.Category (Control.Categorical.Monad.Cokleisli s ɯ) instance forall k1 k2 (s :: k2 -> k2 -> *) (ɯ :: k1 -> k2) (a :: k1). Control.Category.Category s => Control.Categorical.Functor.Functor s (->) (Control.Categorical.Monad.Cokleisli s ɯ a) instance forall k1 k2 (s :: k2 -> k2 -> *) (t :: k1 -> k1 -> *) (ɯ :: k2 -> k1). Control.Categorical.Functor.Functor s t ɯ => Control.Categorical.Functor.Functor (Control.Category.Dual.Dual s) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Monad.Cokleisli t ɯ) instance forall β (s :: β -> β -> *) (ɯ :: β -> β). Control.Categorical.Monad.Comonad s ɯ => Control.Categorical.Functor.Functor (Control.Categorical.Monad.Cokleisli s ɯ) s ɯ instance Control.Categorical.Monad.Comonad (->) Data.Functor.Identity.Identity instance Control.Categorical.Monad.Comonad (->) GHC.Base.NonEmpty instance GHC.Base.Monoid m => Control.Categorical.Monad.Comonad (->) ((->) m) instance Control.Categorical.Monad.Comonad (->) ((,) a) instance Control.Categorical.Monad.Comonad (->) (Data.Semigroup.Arg a) instance forall k (s :: k -> k -> *) (m :: k -> k). Control.Categorical.Monad.Monad s m => Control.Category.Category (Control.Categorical.Monad.Kleisli s m) instance forall k1 k2 (s :: k2 -> k2 -> *) (t :: k1 -> k1 -> *) (m :: k2 -> k1) (a :: k1). Control.Categorical.Functor.Functor s t m => Control.Categorical.Functor.Functor s (->) (Control.Categorical.Monad.Kleisli t m a) instance forall k1 k2 (s :: k2 -> k2 -> *) (m :: k1 -> k2). Control.Category.Category s => Control.Categorical.Functor.Functor (Control.Category.Dual.Dual s) (Control.Categorical.Functor.NT (->)) (Control.Categorical.Monad.Kleisli s m) instance forall β (s :: β -> β -> *) (m :: β -> β). Control.Categorical.Monad.Monad s m => Control.Categorical.Functor.Functor (Control.Categorical.Monad.Kleisli s m) s m instance GHC.Base.Monad m => Control.Categorical.Monad.Monad (->) m module Data.Functor.Trans.Writer newtype WriterT p w f a WriterT :: f (p w a) -> WriterT p w f a [runWriterT] :: WriterT p w f a -> f (p w a) instance forall k1 k2 (f :: * -> *) (s :: k2 -> k2 -> *) (p :: k1 -> k2 -> *) (w :: k1). (Control.Categorical.Functor.Functor (->) (->) f, Control.Categorical.Functor.Functor s (->) (p w)) => Control.Categorical.Functor.Functor s (->) (Data.Functor.Trans.Writer.WriterT p w f) instance (GHC.Base.Monoid w, Control.Categorical.Monad.Monad (->) f) => Control.Categorical.Monad.Monad (->) (Data.Functor.Trans.Writer.WriterT (,) w f) instance forall k (p :: k -> * -> *) (w :: k) (f :: * -> *). (Control.Categorical.Monad.Comonad (->) (p w), Control.Categorical.Monad.Comonad (->) f) => Control.Categorical.Monad.Comonad (->) (Data.Functor.Trans.Writer.WriterT p w f) instance Control.Categorical.Monad.Monad (->) f => Control.Categorical.Monad.Monad (->) (Data.Functor.Trans.Writer.WriterT Data.Either.Either w f) instance forall k1 k2 k3 (p :: k1 -> k2 -> k3) (w :: k1). Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) (Data.Functor.Trans.Writer.WriterT p w) module Data.Functor.Trans.Reader newtype ReaderT s r f a ReaderT :: (r `s` f a) -> ReaderT s r f a [runReaderT] :: ReaderT s r f a -> r `s` f a instance forall k1 k2 (s :: k2 -> k2 -> *) (t :: k1 -> k1 -> *) (f :: k2 -> k1) (r :: k1). Control.Categorical.Functor.Functor s t f => Control.Categorical.Functor.Functor s (->) (Data.Functor.Trans.Reader.ReaderT t r f) instance forall k1 k2 (t :: k2 -> k2 -> *) (f :: k2 -> *) (s :: k1 -> * -> *) (r :: k1). (Control.Categorical.Functor.Functor t (->) f, Control.Categorical.Functor.Functor (->) (->) (s r)) => Control.Categorical.Functor.Functor t (->) (Data.Functor.Trans.Reader.ReaderT s r f) instance Control.Categorical.Monad.Monad (->) f => Control.Categorical.Monad.Monad (->) (Data.Functor.Trans.Reader.ReaderT (->) r f) instance Control.Categorical.Monad.Comonad (->) ɯ => Control.Categorical.Monad.Comonad (->) (Data.Functor.Trans.Reader.ReaderT (,) r ɯ) instance forall k1 k2 k3 (t :: k3 -> k3 -> *) (s :: k2 -> k3 -> *) (r :: k2). Control.Categorical.Functor.Functor t (->) (s r) => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT t) (Control.Categorical.Functor.NT (->)) (Data.Functor.Trans.Reader.ReaderT s r) instance forall k1 k2 (s :: k2 -> * -> *) (r :: k2). Control.Categorical.Monad.Monad (->) (s r) => Control.Categorical.Monad.Monad (Control.Categorical.Functor.NT (->)) (Data.Functor.Trans.Reader.ReaderT s r) instance forall k1 k2 (s :: k2 -> * -> *) (r :: k2). Control.Categorical.Monad.Comonad (->) (s r) => Control.Categorical.Monad.Comonad (Control.Categorical.Functor.NT (->)) (Data.Functor.Trans.Reader.ReaderT s r) instance forall k1 k2 k3 (t :: k3 -> k3 -> *) (s :: k3 -> k2 -> *). Control.Categorical.Functor.Functor t (Control.Categorical.Functor.NT (->)) s => Control.Categorical.Functor.Functor t (Control.Categorical.Functor.NT (Control.Categorical.Functor.NT (->))) (Data.Functor.Trans.Reader.ReaderT s) module Data.Functor.Trans.Identity newtype IdentityT f a IdentityT :: f a -> IdentityT f a [runIdentityT] :: IdentityT f a -> f a instance forall k (s :: k -> k -> *) (f :: k -> *). Control.Categorical.Functor.Functor s (->) f => Control.Categorical.Functor.Functor s (->) (Data.Functor.Trans.Identity.IdentityT f) instance Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (->)) (Control.Categorical.Functor.NT (->)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Monad (->) m => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (Control.Categorical.Monad.Kleisli (->) m)) (Control.Categorical.Functor.NT (Control.Categorical.Monad.Kleisli (->) m)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Comonad (->) ɯ => Control.Categorical.Functor.Functor (Control.Categorical.Functor.NT (Control.Categorical.Monad.Cokleisli (->) ɯ)) (Control.Categorical.Functor.NT (Control.Categorical.Monad.Cokleisli (->) ɯ)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Monad (Control.Categorical.Functor.NT (->)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Comonad (Control.Categorical.Functor.NT (->)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Monad (->) m => Control.Categorical.Monad.Monad (Control.Categorical.Functor.NT (Control.Categorical.Monad.Kleisli (->) m)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Comonad (->) ɯ => Control.Categorical.Monad.Monad (Control.Categorical.Functor.NT (Control.Categorical.Monad.Cokleisli (->) ɯ)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Comonad (->) ɯ => Control.Categorical.Monad.Comonad (Control.Categorical.Functor.NT (Control.Categorical.Monad.Cokleisli (->) ɯ)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Monad (->) m => Control.Categorical.Monad.Comonad (Control.Categorical.Functor.NT (Control.Categorical.Monad.Kleisli (->) m)) Data.Functor.Trans.Identity.IdentityT instance Control.Categorical.Monad.Monad (->) f => Control.Categorical.Monad.Monad (->) (Data.Functor.Trans.Identity.IdentityT f) instance Control.Categorical.Monad.Comonad (->) f => Control.Categorical.Monad.Comonad (->) (Data.Functor.Trans.Identity.IdentityT f) instance forall k (s :: k -> k -> *) (m :: * -> *) (f :: k -> *). (Control.Categorical.Functor.Functor s (Control.Categorical.Monad.Kleisli (->) m) f, Control.Categorical.Functor.Endofunctor (->) m) => Control.Categorical.Functor.Functor s (Control.Categorical.Monad.Kleisli (->) m) (Data.Functor.Trans.Identity.IdentityT f) instance forall k (s :: k -> k -> *) (ɯ :: * -> *) (f :: k -> *). (Control.Categorical.Functor.Functor s (Control.Categorical.Monad.Cokleisli (->) ɯ) f, Control.Categorical.Functor.Endofunctor (->) ɯ) => Control.Categorical.Functor.Functor s (Control.Categorical.Monad.Cokleisli (->) ɯ) (Data.Functor.Trans.Identity.IdentityT f)