package colibri2

  1. Overview
  2. Docs
module type S1 = sig ... end
module Make1 (K : sig ... end) (D : sig ... end) : S1 with type 'a key = 'a K.t and type ('a, 'b) data = ('a, 'b) D.t

The following are needed in order to avoid ('a,'b) t = 'b in an instanciation of the previous functors (cf. ocaml mantis #5083: J.Garrigue : "Phantom types must be either abstract or private. In particular, using an abbreviation for a phantom type is just a Russian roulette.")

module type R1 = sig ... end

Same as S1 but for ('a,'b) data = 'b

module RMake1 (K : sig ... end) : R1 with type 'a key = 'a K.t
OCaml

Innovation. Community. Security.