This module defines signatures that are to be included in other signatures to ensure a
consistent interface to invariant-style functions. There is a signature (S
, S1
,
S2
, S3
) for each arity of type. Usage looks like:
type t
include Invariant.S with type t := t
or
type 'a t
include Invariant.S1 with type 'a t := 'a t
module type S : sig ... end
module type S1 : sig ... end
module type S2 : sig ... end
module type S3 : sig ... end
module type Invariant : sig ... end