f . g
reads as “f after g”A morphism that maps every object of its domain to every object of its co-domain.
A morphism mapping a domain to a strict-subset of the objects in the co-domain, i.e. there are objects in the co-domain which cannot be mapped to.
When moving between categories via monomorphisms, we can simplify to make some compositions equal even if the morphisms are not actually equal, e.g. f x = mod x 20
, g1 x = x*2
, and g2 x = if x < 20 then x*2 else x*3
, we can consider g1
and g2
to be equal if they are composed after f
: g1 . f = g2 . f => g1 = g2
.
In other circumstances f . g1 = f . g2 => g1 = g2
might be a valid simplification.
A morphism with an inverse morphism: we can jump back and forth between the domain and co-domain. NB. It may still be a monomorphism so the categories may not be “identical”.
TODO: monad, functor, applicative, space
https://wiki.haskell.org/Category_theory
TODO: partial order (poset), preorder (proset), lattice
Goes between categories. In Haskell terms, the Functor typeclass serves to “lift” a normal function into a Functor instance, thereby mapping a morphism in one (Hask sub-)category over to a morphism in another.