Module PolyMap.Make

Parameters

Signature

module type OneTag = sig ... end
type 'a onetag = (module OneTag with type a = 'a)

There is no equality function between _ tag values (other than Stdlib.(=)), and especially no equality function which shows that when the values are equal the type arguments are also equal.

Instead we can use 'a onetag to recognize 'b tag values.

val eq_onetag : 'a onetag -> 'b Tag.tag -> ('a'b) CSig.eq option
val make : unit -> 'a onetag
val tag_of_onetag : 'a onetag -> 'a Tag.tag
module type MapS = sig ... end
module Map : functor (V : ValueS) -> MapS with type 'a value := 'a V.t