Geninterp.Val
type 'a typ
val create : string -> 'a typ
type _ tag =
| Base : 'a typ -> 'a tag
| List : 'a tag -> 'a list tag
| Opt : 'a tag -> 'a option tag
| Pair : 'a tag * 'b tag -> ('a * 'b) tag
type t =
| Dyn : 'a typ * 'a -> t
val eq : 'a typ -> 'b typ -> ('a, 'b) CSig.eq option
val repr : 'a typ -> string
val pr : 'a typ -> Pp.t
val typ_list : t list typ
val typ_opt : t option typ
val typ_pair : (t * t) typ
val inject : 'a tag -> 'a -> t