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'a
sequence =('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
)
:MONAD
with type 'a t = 'a M.t
module MakeFree(
F
:
FUNCTOR
)
:FREE_MONAD
with module F = F
module MakeFreeFold(
FM
:
FREE_MONAD
)
(
Fold
:
FOLDABLE
with type 'a t = 'a FM.F.t
)
:FOLDABLE
with type 'a t = 'a FM.t