Module Ppxlib.Deriving.Args

Specification of generator arguments

type ('a, 'b) t
type 'a param
val empty : ('m, 'm) t
val arg : Ppxlib__.Import.string ‑> (Ppxlib__.Import.expression, 'a ‑> 'a Ppxlib__.Import.option, 'a Ppxlib__.Import.option) Ast_pattern.t ‑> 'a Ppxlib__.Import.option param
val flag : Ppxlib__.Import.string ‑> Ppxlib__.Import.bool param

Flag matches punned labelled argument, i.e. of the form ~foo. It returns true iff the argument is present.

val (+>) : ('m1, 'a ‑> 'm2) t ‑> 'a param ‑> ('m1, 'm2) t

For convenience, so that one can write the following without having to open both Ast_pattern and Deriving.Args:

        Deriving.Args.(empty
                       +> arg_option "foo" (estring __)
                       +> arg_option "bar" (pack2 (eint __ ** eint __))
                       +> flag "dotdotdot"
                      )
include module type of sig ... end with type (a, b, c) t := (a, b, c) Ast_pattern.t
type ('a, 'b, 'c) t = ('a, 'b, 'c) Ppxlib__.Ast_pattern0.t
val parse : ('a, 'b, 'c) t ‑> Location.t ‑> ?⁠on_error:(Ppxlib__.Import.unit ‑> 'c) ‑> 'a ‑> 'b ‑> 'c
val __ : ('a, 'a ‑> 'b, 'b) t
val __' : ('a, 'a Loc.t ‑> 'b, 'b) t
val alt : ('a, 'b, 'c) t ‑> ('a, 'b, 'c) t ‑> ('a, 'b, 'c) t
val alt_option : ('a, 'v ‑> 'b, 'c) t ‑> ('a, 'b, 'c) t ‑> ('a, 'v Ppxlib__.Import.option ‑> 'b, 'c) t
val (|||) : ('a, 'b, 'c) t ‑> ('a, 'b, 'c) t ‑> ('a, 'b, 'c) t
val map : ('a, 'b, 'c) t ‑> f:('d ‑> 'b) ‑> ('a, 'd, 'c) t
val map' : ('a, 'b, 'c) t ‑> f:(Location.t ‑> 'd ‑> 'b) ‑> ('a, 'd, 'c) t
val map_result : ('a, 'b, 'c) t ‑> f:('c ‑> 'd) ‑> ('a, 'b, 'd) t
val (>>|) : ('a, 'b, 'c) t ‑> ('d ‑> 'b) ‑> ('a, 'd, 'c) t
val map0 : ('a, 'b, 'c) t ‑> f:'v ‑> ('a, 'v ‑> 'b, 'c) t
val map1 : ('a, 'v1 ‑> 'b, 'c) t ‑> f:('v1 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) t
val map2 : ('a, 'v1 ‑> 'v2 ‑> 'b, 'c) t ‑> f:('v1 ‑> 'v2 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) t
val map0' : ('a, 'b, 'c) t ‑> f:(Location.t ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) t
val map1' : ('a, 'v1 ‑> 'b, 'c) t ‑> f:(Location.t ‑> 'v1 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) t
val map2' : ('a, 'v1 ‑> 'v2 ‑> 'b, 'c) t ‑> f:(Location.t ‑> 'v1 ‑> 'v2 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) t
val nil : ('b Ppxlib__.Import.list, 'a, 'a) t
val (^::) : ('a, 'b, 'c) t ‑> ('a Ppxlib__.Import.list, 'c, 'd) t ‑> ('a Ppxlib__.Import.list, 'b, 'd) t
val many : ('a, 'b ‑> 'b, 'c) t ‑> ('a Ppxlib__.Import.list, 'c Ppxlib__.Import.list ‑> 'd, 'd) t
val int : Ppxlib__.Import.int ‑> (Ppxlib__.Import.int, 'a, 'a) t
val char : Ppxlib__.Import.char ‑> (Ppxlib__.Import.char, 'a, 'a) t
val string : Ppxlib__.Import.string ‑> (Ppxlib__.Import.string, 'a, 'a) t
val float : Ppxlib__.Import.float ‑> (Ppxlib__.Import.float, 'a, 'a) t
val int32 : Ppxlib__.Import.int32 ‑> (Ppxlib__.Import.int32, 'a, 'a) t
val int64 : Ppxlib__.Import.int64 ‑> (Ppxlib__.Import.int64, 'a, 'a) t
val nativeint : Ppxlib__.Import.nativeint ‑> (Ppxlib__.Import.nativeint, 'a, 'a) t
val bool : Ppxlib__.Import.bool ‑> (Ppxlib__.Import.bool, 'a, 'a) t
val cst : to_string:('a ‑> Ppxlib__.Import.string) ‑> ?⁠equal:('a ‑> 'a ‑> Ppxlib__.Import.bool) ‑> 'a ‑> ('a, 'b, 'b) t
val none : ('b Ppxlib__.Import.option, 'a, 'a) t
val some : ('a, 'b, 'c) t ‑> ('a Ppxlib__.Import.option, 'b, 'c) t
val pair : ('a1, 'b, 'c) t ‑> ('a2, 'c, 'd) t ‑> ('a1 * 'a2, 'b, 'd) t
val (**) : ('a1, 'b, 'c) t ‑> ('a2, 'c, 'd) t ‑> ('a1 * 'a2, 'b, 'd) t
val triple : ('a1, 'b, 'c) t ‑> ('a2, 'c, 'd) t ‑> ('a3, 'd, 'e) t ‑> ('a1 * 'a2 * 'a3, 'b, 'e) t
val loc : ('a, 'b, 'c) t ‑> ('a Loc.t, 'b, 'c) t
val pack0 : ('a, 'b, 'c) t ‑> ('a, Ppxlib__.Import.unit ‑> 'b, 'c) t
val pack2 : ('a, 'b ‑> 'c ‑> 'd, 'e) t ‑> ('a, ('b * 'c) ‑> 'd, 'e) t
val pack3 : ('a, 'b ‑> 'c ‑> 'd ‑> 'e, 'f) t ‑> ('a, ('b * 'c * 'd) ‑> 'e, 'f) t
val labelled : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t
val optional : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t
val class_infos : virt:(Ppxlib__.Import.virtual_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> params:((Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> name:(string, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> expr:('e, 'd, 'f) Ppxlib__.Ast_pattern0.t ‑> ('e Ppxlib__.Import.class_infos, 'a, 'f) Ppxlib__.Ast_pattern0.t
val pconst_integer : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (char option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'a, 'c) Ppxlib__.Ast_pattern0.t
val pconst_char : (char, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'a, 'b) Ppxlib__.Ast_pattern0.t
val pconst_string : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (string option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'a, 'c) Ppxlib__.Ast_pattern0.t
val pconst_float : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (char option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'a, 'c) Ppxlib__.Ast_pattern0.t
val constructor_declaration : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> args:(Ppxlib__.Import.constructor_arguments, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> res:(Ppxlib__.Import.core_type option, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constructor_declaration, 'a, 'd) Ppxlib__.Ast_pattern0.t
val ptyp_var : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t
val pdir_string : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'b) Ppxlib__.Ast_pattern0.t
val pdir_int : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (char option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'c) Ppxlib__.Ast_pattern0.t
val pdir_bool : (bool, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'b) Ppxlib__.Ast_pattern0.t
val pexp_setinstvar : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.t
val pexp_unreachable : (Ppxlib__.Import.expression, 'a, 'a) Ppxlib__.Ast_pattern0.t
val include_infos : mod_:('a, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> ('a Ppxlib__.Import.include_infos, 'b, 'c) Ppxlib__.Ast_pattern0.t
val label_declaration : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> mutable_:(Ppxlib__.Import.mutable_flag, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> type_:(Ppxlib__.Import.core_type, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.label_declaration, 'a, 'd) Ppxlib__.Ast_pattern0.t
val location : start:(Ppxlib__.Import.position, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> end_:(Ppxlib__.Import.position, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> ghost:(bool, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.location, 'a, 'd) Ppxlib__.Ast_pattern0.t
val lident : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t
val module_binding : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> expr:(Ppxlib__.Import.module_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_binding, 'a, 'c) Ppxlib__.Ast_pattern0.t
val module_declaration : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> type_:(Ppxlib__.Import.module_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.t
val module_type_declaration : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> type_:(Ppxlib__.Import.module_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.t
val ppat_var : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t
val ppat_alias : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (string, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.t
val ppat_unpack : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t
val position : fname:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> lnum:(int, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> bol:(int, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> cnum:(int, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.position, 'a, 'e) Ppxlib__.Ast_pattern0.t
val nonrecursive : (Ppxlib__.Import.rec_flag, 'a, 'a) Ppxlib__.Ast_pattern0.t
val ptype_abstract : (Ppxlib__.Import.type_kind, 'a, 'a) Ppxlib__.Ast_pattern0.t
val value_description : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> type_:(Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> prim:(string list, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_description, 'a, 'd) Ppxlib__.Ast_pattern0.t
val contravariant : (Ppxlib__.Import.variance, 'a, 'a) Ppxlib__.Ast_pattern0.t
val true_ : (Ppxlib__.Import.bool, 'a, 'a) t
val false_ : (Ppxlib__.Import.bool, 'a, 'a) t
val eint : (Ppxlib__.Import.int, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val echar : (Ppxlib__.Import.char, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val estring : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val efloat : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val eint32 : (Ppxlib__.Import.int32, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val eint64 : (Ppxlib__.Import.int64, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val enativeint : (Ppxlib__.Import.nativeint, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) t
val pint : (Ppxlib__.Import.int, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pchar : (Ppxlib__.Import.char, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pstring : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pfloat : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pint32 : (Ppxlib__.Import.int32, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pint64 : (Ppxlib__.Import.int64, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val pnativeint : (Ppxlib__.Import.nativeint, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) t
val single_expr_payload : (Ppxlib__.Import.expression, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'a, 'b) t
val no_label : (Ppxlib__.Import.expression, 'a, 'b) t ‑> (Ppxlib__.Import.Asttypes.arg_label * Ppxlib__.Import.expression, 'a, 'b) t
val attribute : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'b, 'c) t ‑> (Ppxlib__.Import.attribute, 'a, 'c) t
val extension : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'b, 'c) t ‑> (Ppxlib__.Import.attribute, 'a, 'c) t
val elist : (Ppxlib__.Import.expression, 'a ‑> 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'b Ppxlib__.Import.list ‑> 'c, 'c) t
val of_func : (context ‑> Location.t ‑> 'a ‑> 'b ‑> 'c) ‑> ('a, 'b, 'c) t
val to_func : ('a, 'b, 'c) t ‑> context ‑> Location.t ‑> 'a ‑> 'b ‑> 'c