Preface_specs.CategoryA Category is a Semigroupoid with an identity at each object.
To have a predictable behaviour, the instance of Category must obey some laws.
f % id = fid % f = ff % (g % h) = (f % g) % hmodule type WITH_ID = sig ... endMinimal interface using id.
module type WITH_ID_AND_COMPOSE = sig ... endMinimal interface using id and compose.
module type CORE = WITH_ID_AND_COMPOSEBasis operations.
module type OPERATION = sig ... endAdditional operations.
module type INFIX = sig ... endInfix operators.
module type API = sig ... endThe complete interface of a Category.