constrained-categories-0.3.1.0: Constrained clones of the category-theory type classes, using ConstraintKinds.

Copyright(c) 2018 Justus Sagemüller
LicenseGPL v3 (see COPYING)
Maintainer(@) sagemueller $ geo.uni-koeln.de
Safe HaskellTrustworthy
LanguageHaskell2010

Control.Category.Discrete

Description

 

Synopsis

Documentation

data Discrete a b where Source #

The discrete category is the category with the minimum possible amount of arrows: for any given type, there is id, and that's all. You can use this to provide a proof that some endomorphism (of not closer specified category) is the identity.

Constructors

Refl :: Discrete a a 

Instances

Category k (Discrete k) Source # 

Methods

id :: cat a a #

(.) :: cat b c -> cat a b -> cat a c #

Functor [] (Discrete *) (Discrete *) Source # 

Methods

fmap :: (Object (Discrete *) a, Object (Discrete *) [a], Object (Discrete *) b, Object (Discrete *) [b]) => Discrete * a b -> Discrete * [a] [b] Source #

Functor Maybe (Discrete *) (Discrete *) Source # 

Methods

fmap :: (Object (Discrete *) a, Object (Discrete *) (Maybe a), Object (Discrete *) b, Object (Discrete *) (Maybe b)) => Discrete * a b -> Discrete * (Maybe a) (Maybe b) Source #

Functor IO (Discrete *) (Discrete *) Source # 

Methods

fmap :: (Object (Discrete *) a, Object (Discrete *) (IO a), Object (Discrete *) b, Object (Discrete *) (IO b)) => Discrete * a b -> Discrete * (IO a) (IO b) Source #

Functor Complex (Discrete *) (Discrete *) Source # 
HasAgent (Discrete *) Source # 

Associated Types

type AgentVal (Discrete * :: * -> * -> *) a v :: * Source #

Methods

alg :: (Object (Discrete *) a, Object (Discrete *) b) => (forall q. Object (Discrete *) q => AgentVal (Discrete *) q a -> AgentVal (Discrete *) q b) -> Discrete * a b Source #

($~) :: (Object (Discrete *) a, Object (Discrete *) b, Object (Discrete *) c) => Discrete * b c -> AgentVal (Discrete *) a b -> AgentVal (Discrete *) a c Source #

Category (Discrete *) Source # 

Associated Types

type Object (Discrete * :: * -> * -> *) o :: Constraint Source #

Methods

id :: Object (Discrete *) a => Discrete * a a Source #

(.) :: (Object (Discrete *) a, Object (Discrete *) b, Object (Discrete *) c) => Discrete * b c -> Discrete * a b -> Discrete * a c Source #

EnhancedCat (Coercion *) (Discrete *) Source # 

Methods

arr :: (Object (Discrete *) b, Object (Discrete *) c, Object (Coercion *) b, Object (Coercion *) c) => Discrete * b c -> Coercion * b c Source #

Functor (Either a) (Discrete *) (Discrete *) Source # 

Methods

fmap :: (Object (Discrete *) a, Object (Discrete *) (Either a a), Object (Discrete *) b, Object (Discrete *) (Either a b)) => Discrete * a b -> Discrete * (Either a a) (Either a b) Source #

Functor ((,) a) (Discrete *) (Discrete *) Source # 

Methods

fmap :: (Object (Discrete *) a, Object (Discrete *) (a, a), Object (Discrete *) b, Object (Discrete *) (a, b)) => Discrete * a b -> Discrete * (a, a) (a, b) Source #

EnhancedCat (Discrete *) f => EnhancedCat (Discrete *) (ConstrainedCategory f o) Source # 
EnhancedCat ((->) LiftedRep LiftedRep) (Discrete *) Source # 
Category f => EnhancedCat (ConstrainedCategory f o) (Discrete *) Source # 
Functor ((->) LiftedRep LiftedRep a) (Discrete *) (Discrete *) Source # 
type Object (Discrete *) o Source # 
type Object (Discrete *) o = ()
type AgentVal (Discrete *) a v Source #