Abstract identifiers with two polymorphic parameters.

type ('a, 'b) t
val equal : 'a equal -> 'b equal -> ('a, 'b) t equal
val compare : 'a compare -> 'b compare -> ('a, 'b) t compare
val hash : 'a hash -> 'b hash -> ('a, 'b) t hash
val to_json : 'a to_json -> 'b to_json -> ('a, 'b) t to_json

The REST interface

val of_json : 'a of_json -> 'b of_json -> ('a, 'b) t of_json
val size_of : 'a size_of -> 'b size_of -> ('a, 'b) t size_of

The serialization format

val write : 'a writer -> 'b writer -> ('a, 'b) t writer
val read : 'a reader -> 'b reader -> ('a, 'b) t reader