Types.Separability
see Typedecl_separability
for an explanation of separability and separability modes.
val print : Stdlib.Format.formatter -> t -> unit
val rank : t -> int
Modes are ordered from the least to the most demanding: Ind < Sep < Deepsep. 'rank' maps them to integers in an order-respecting way: m1 < m2 <=> rank m1 < rank m2
max_mode m1 m2
returns the most demanding mode. It is used to express the conjunction of two parameter mode constraints.
type signature = t list
The 'separability signature' of a type assigns a mode for each of its parameters. ('a, 'b) t
has mode (m1, m2)
if (t1, t2) t
is separable whenever t1, t2
have mode m1, m2
.
val print_signature : Stdlib.Format.formatter -> signature -> unit
val default_signature : arity:int -> signature
The most pessimistic separability for a completely unknown type.