categories-1.0.7: Categories

Copyright20082012 Edward Kmett
LicenseBSD
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitynon-portable (class-associated types)
Safe HaskellSafe
LanguageHaskell2010

Control.Category.Monoidal

Description

A Monoidal category is a category with an associated biendofunctor that has an identity, which satisfies Mac Lane''s pentagonal and triangular coherence conditions Technically we usually say that category is Monoidal, but since most interesting categories in our world have multiple candidate bifunctors that you can use to enrich their structure, we choose here to think of the bifunctor as being monoidal. This lets us reuse the same Bifunctor over different categories without painful newtype wrapping.

Synopsis

Documentation

class Associative k p => Monoidal k p where Source #

Denotes that we have some reasonable notion of Identity for a particular Bifunctor in this Category. This notion is currently used by both Monoidal and Comonoidal

A monoidal category. idl and idr are traditionally denoted lambda and rho the triangle identities hold:

first idr = second idl . associate
second idl = first idr . associate
first idr = disassociate . second idl
second idl = disassociate . first idr
idr . coidr = id
idl . coidl = id
coidl . idl = id
coidr . idr = id

Minimal complete definition

idl, idr, coidl, coidr

Associated Types

type Id (k :: * -> * -> *) (p :: * -> * -> *) :: * Source #

Methods

idl :: k (p (Id k p) a) a Source #

idr :: k (p a (Id k p)) a Source #

coidl :: k a (p (Id k p) a) Source #

coidr :: k a (p a (Id k p)) Source #

Instances

Monoidal (->) Either Source # 

Associated Types

type Id ((->) :: * -> * -> *) (Either :: * -> * -> *) :: * Source #

Methods

idl :: Either (Id (->) Either) a -> a Source #

idr :: Either a (Id (->) Either) -> a Source #

coidl :: a -> Either (Id (->) Either) a Source #

coidr :: a -> Either a (Id (->) Either) Source #

Monoidal (->) (,) Source # 

Associated Types

type Id ((->) :: * -> * -> *) ((,) :: * -> * -> *) :: * Source #

Methods

idl :: (Id (->) (,), a) -> a Source #

idr :: (a, Id (->) (,)) -> a Source #

coidl :: a -> (Id (->) (,), a) Source #

coidr :: a -> (a, Id (->) (,)) Source #