module CCCat:sig..end
Attempt to copy some structures from Haskell and the likes. Disclaimer:
I don't know much about category theory, only about type signatures ;).
module type MONOID =sig..end
module type FUNCTOR =sig..end
module type APPLICATIVE =sig..end
module type MONAD_BARE =sig..end
module type MONAD =sig..end
module type MONAD_TRANSFORMER =sig..end
type'asequence =('a -> unit) -> unit
module type FOLDABLE =sig..end
module type TRAVERSE =(M:MONAD)sig..end
module type FREE_MONAD =sig..end
F.
module WrapMonad(M:MONAD_BARE):MONADwith type 'a t = 'a M.t
module MakeFree(F:FUNCTOR):FREE_MONADwith module F = F
module MakeFreeFold(FM:FREE_MONAD)(Fold:FOLDABLEwith type 'a t = 'a FM.F.t):FOLDABLEwith type 'a t = 'a FM.t