Module Typerep_sexp.Sexprep.Sexp_of

type 'a t = 'a ‑> Core_kernel.Sexp.t
type 'a computation = 'a t
val ident : Typerep_extended.Std.Type_generic.Ident.t
exception Not_implemented of string * string

generic_ident * typename or info

register mechanism to customize the behavior of this generic

include Typerep_lib.Type_generic_intf.S with type t := a t
type 'a t
include module type of sig ... end
module type S0 : sig ... end
module type S1 : sig ... end
module type S2 : sig ... end
module type S3 : sig ... end
module type S4 : sig ... end
module type S5 : sig ... end
val register0 : (module S0) ‑> unit

Extending an existing generic for a particular type name

The use of first class modules there is essentially because we cannot talk about a variable of kind * -> k val register1 : 'a 't Typerep.t -> ('a computation -> 'a 't computation) -> unit ...

val register1 : (module S1) ‑> unit
val register2 : (module S2) ‑> unit
val register3 : (module S3) ‑> unit
val register4 : (module S4) ‑> unit
val register5 : (module S5) ‑> unit
val register : 'a Typerep_lib.Std_internal.Typerep.t ‑> 'a computation ‑> unit

special less scary type when the type has no parameters. this is equivalent as using register0

val of_typerep : 'a Typerep_lib.Std_internal.Typerep.t ‑> [ `generic of 'a computation ]

main function : compute the generic computation from the typerep

module Computation : Typerep_extended.Std.Type_generic.Computation with type 'a t = 'a t

exported to build a computation on top of a previous one