1234567891011121314151617181920212223242526272829303132333435363738394041424344(** This module defines signatures that are to be included in other signatures to ensure a
consistent interface to [equal] functions. There is a signature ([S], [S1], [S2],
[S3]) for each arity of type. Usage looks like:
{[
type t
include Equal.S with type t := t
]}
or
{[
type 'a t
include Equal.S1 with type 'a t := 'a t
]} *)open!Importtype'at='a->'a->booltype'aequal='atmoduletypeS=sigtypetvalequal:tequalendmoduletypeS1=sigtype'atvalequal:'aequal->'atequalendmoduletypeS2=sigtype('a,'b)tvalequal:'aequal->'bequal->('a,'b)tequalendmoduletypeS3=sigtype('a,'b,'c)tvalequal:'aequal->'bequal->'cequal->('a,'b,'c)tequalend