sig
module Field = Generic_core_desc.Field
module Fields = Generic_core_desc.Fields
module Record = Generic_core_desc.Record
module Con = Generic_core_desc.Con
module Variant = Generic_core_desc.Variant
module Ext = Generic_core_desc.Ext
module Poly = Generic_core_desc.Poly
module Method = Generic_core_desc.Method
module Object = Generic_core_desc.Object
module Class = Generic_core_desc.Class
module Array = Generic_core_desc.Array
module Custom = Generic_core_desc.Custom
module T = Generic_core_desc.T
type 'a desc =
'a T.desc =
Array : 'e Generic_core.Ty.T.ty *
(module Array.intf with type elt = 'e and type t = 'a) -> 'a desc
| Product : 'ts Generic_core.Product.t *
('ts, 'p) Generic_util.Fun.iso -> 'p desc
| Record : ('p, 'r) Record.t -> 'r desc
| Synonym : 'a Generic_core.Ty.T.ty *
('a, 'b) Generic_core.Equal.t -> 'b desc
| Variant of 'a Variant.t
| Extensible of 'a Ext.t
| Custom of 'a Custom.t
| Class of 'a Class.t
| Abstract
| NoDesc
type 'a t = 'a T.desc
type desc_fun =
Generic_core_desc_fun.desc_fun = {
f : 'a. 'a Generic_core.Ty.ty -> 'a Generic_core.Desc.t;
}
val view : 'a Generic_core.Ty.ty -> 'a Generic_core.Desc.t
val ext : 'a Generic_core.Ty.pat -> desc_fun -> unit
val ext_register : 'a Generic_core.Ty.ty -> string -> unit
val ext_add_con :
'a Generic_core.Ty.ty -> Generic_core.Desc.Ext.con -> unit
val ext_conap :
'a Generic_core.Ty.ty -> 'a -> 'a Generic_core.Desc.Con.conap
val ext_iter :
'a Generic_core.Ty.ty -> ('a Generic_core.Desc.Con.t -> unit) -> unit
val ext_fold :
'a Generic_core.Ty.ty ->
('a Generic_core.Desc.Con.t -> 'b -> 'b) -> 'b -> 'b
end