Module types are dependent records
module type EQ = sig
type t
val eq : t -> t -> bool
end
module type MONAD = sig
type 'a t
val pure : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
end
module type EQ = sig
type t
val eq : t -> t -> bool
end
module type MONAD = sig
type 'a t
val pure : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
end