First class AST patterns
PPX rewriters often need to recognize fragments the OCaml AST, for instance to parse the payload of an attribute/expression. You can do that with a pattern matching and manual error reporting when the input is not what you expect but this has proven to quickly become extremely verbose and unreadable.
This module aims to help with that by providing first class AST patterns.
To understand how to use it, let's consider the example of ppx_inline_test. We want to recognize patterns of the form:
let%test "name" = exprWhich is a syntactic sugar for:
[%%test let "name" = expr]If we wanted to write a function that recognizes the payload of %%test using normal
pattern matching we would write:
let match_payload = function
| Pstr [ { pstr_desc = Pstr_value (Nonrecursive,
[ { pvb_pat = Ppat_constant (Constant_string
(name, None))
; pvb_expr = e
; _ } ])
; _ } ] ->
(name, e)
| _ -> Location.raisef ...This is quite cumbersome, and this is still not right: this function drops all attributes without notice.
Now let's imagine we wanted to construct the payload instead, using Ast_builder one
would write:
let build_payload ~loc name expr =
let (module B) = Ast_builder.with_loc loc in
let open B in
pstr [ pstr_value Nonrecursive (value_binding ~pat:(pstring name) ~expr) ]Constructing a first class pattern is almost as simple as replacing Ast_builder by
Ast_pattern:
let payload_pattern name expr =
let open Ast_pattern in
pstr (pstr_value nonrecursive (value_binding ~pat:(pstring __) ~expr:__) ^:: nil)Notice that the place-holders for name and expr have been replaced by __. The
following pattern with have type:
(payload, string -> expression -> 'a, 'a) Ast_pattern.twhich means that it matches values of type payload and captures a string and
expression from it. The two captured elements comes from the use of __.
Type of a pattern:
'a is the type of value matched by the pattern'b is the continuation, for instance for a pattern that captures an int and a
string, 'b will be int -> string -> _'c is the result of the continuation.val parse : ('a, 'b, 'c) t ‑> Ppxlib.Location.t ‑> ?on_error:(Ppxlib__.Import.unit ‑> 'c) ‑> 'a ‑> 'b ‑> 'cMatches a value against a pattern.
val __' : ('a, 'a Ppxlib.Loc.t ‑> 'b, 'b) tSame as __ but also captures the location.
Note: this should only be used for types that do not embed a location. For instance you can use it to capture a string constant:
estring __'but using it to capture an expression would not yield the expected result:
pair (eint (int 42)) __'In the latter case you should use the pexp_loc field of the captured expression
instead.
val alt_option : ('a, 'v ‑> 'b, 'c) t ‑> ('a, 'b, 'c) t ‑> ('a, 'v Ppxlib__.Import.option ‑> 'b, 'c) tSame as alt, for the common case where the left-hand-side captures a value but not
the right-hand-side.
val map' : ('a, 'b, 'c) t ‑> f:(Ppxlib.Location.t ‑> 'd ‑> 'b) ‑> ('a, 'd, 'c) tval map0' : ('a, 'b, 'c) t ‑> f:(Ppxlib.Location.t ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) tval map1' : ('a, 'v1 ‑> 'b, 'c) t ‑> f:(Ppxlib.Location.t ‑> 'v1 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) tval map2' : ('a, 'v1 ‑> 'v2 ‑> 'b, 'c) t ‑> f:(Ppxlib.Location.t ‑> 'v1 ‑> 'v2 ‑> 'v) ‑> ('a, 'v ‑> 'b, 'c) tval nil : (_ Ppxlib__.Import.list, 'a, 'a) tval (^::) : ('a, 'b, 'c) t ‑> ('a Ppxlib__.Import.list, 'c, 'd) t ‑> ('a Ppxlib__.Import.list, 'b, 'd) tval many : ('a, 'b ‑> 'b, 'c) t ‑> ('a Ppxlib__.Import.list, 'c Ppxlib__.Import.list ‑> 'd, 'd) tval int : Ppxlib__.Import.int ‑> (Ppxlib__.Import.int, 'a, 'a) tval char : Ppxlib__.Import.char ‑> (Ppxlib__.Import.char, 'a, 'a) tval string : Ppxlib__.Import.string ‑> (Ppxlib__.Import.string, 'a, 'a) tval float : Ppxlib__.Import.float ‑> (Ppxlib__.Import.float, 'a, 'a) tval int32 : Ppxlib__.Import.int32 ‑> (Ppxlib__.Import.int32, 'a, 'a) tval int64 : Ppxlib__.Import.int64 ‑> (Ppxlib__.Import.int64, 'a, 'a) tval nativeint : Ppxlib__.Import.nativeint ‑> (Ppxlib__.Import.nativeint, 'a, 'a) tval bool : Ppxlib__.Import.bool ‑> (Ppxlib__.Import.bool, 'a, 'a) tval cst : to_string:('a ‑> Ppxlib__.Import.string) ‑> ?equal:('a ‑> 'a ‑> Ppxlib__.Import.bool) ‑> 'a ‑> ('a, 'b, 'b) tval none : (_ Ppxlib__.Import.option, 'a, 'a) tval some : ('a, 'b, 'c) t ‑> ('a Ppxlib__.Import.option, 'b, 'c) tval loc : ('a, 'b, 'c) t ‑> ('a Ppxlib.Loc.t, 'b, 'c) tval pack0 : ('a, 'b, 'c) t ‑> ('a, Ppxlib__.Import.unit ‑> 'b, 'c) tAST patterns for each constructur/record of the parsetree are generated in the same
way AST builders are generated. In addition, for every wrapper we generate a
pattern to match the loc and attributes fields. For instanct for the expression
type:
val pexp_loc
: (Location.t, 'a, 'b) t
-> (expression, 'b, 'c) t
-> (expression, 'a, 'c) t
val pexp_attributes
: (attributes, 'a, 'b) t
-> (expression, 'b, 'c) t
-> (expression, 'a, 'c) tinclude module type of Ppxlib__.Ast_pattern_generatedval nolabel : (Ppxlib__.Import.arg_label, 'a, 'a) Ppxlib__.Ast_pattern0.tval labelled : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.tval optional : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.tval case : lhs:(Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> guard:(Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> rhs:(Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.case, 'a, 'd) Ppxlib__.Ast_pattern0.tval pcl_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcl_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcl_constr : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcl_structure : (Ppxlib__.Import.class_structure, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcl_fun : (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'e) Ppxlib__.Ast_pattern0.tval pcl_apply : (Ppxlib__.Import.class_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> ((Ppxlib__.Import.arg_label * Ppxlib__.Import.expression) list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcl_let : (Ppxlib__.Import.rec_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'd) Ppxlib__.Ast_pattern0.tval pcl_constraint : (Ppxlib__.Import.class_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcl_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcf_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcf_inherit : (Ppxlib__.Import.override_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (string Ppxlib__.Import.loc option, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'd) Ppxlib__.Ast_pattern0.tval pcf_val : (string Ppxlib__.Import.loc * Ppxlib__.Import.mutable_flag * Ppxlib__.Import.class_field_kind, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_method : (string Ppxlib__.Import.loc * Ppxlib__.Import.private_flag * Ppxlib__.Import.class_field_kind, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_constraint : (Ppxlib__.Import.core_type * Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_initializer : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_attribute : (Ppxlib__.Import.attribute, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcf_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval cfk_virtual : (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field_kind, 'a, 'b) Ppxlib__.Ast_pattern0.tval cfk_concrete : (Ppxlib__.Import.override_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_field_kind, 'a, 'c) Ppxlib__.Ast_pattern0.tval class_infos_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> ('c Ppxlib__.Import.class_infos, 'b, 'd) Ppxlib__.Ast_pattern0.t ‑> ('c Ppxlib__.Import.class_infos, 'a, 'd) Ppxlib__.Ast_pattern0.tval 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.tval class_signature : self:(Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> fields:(Ppxlib__.Import.class_type_field list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_signature, 'a, 'c) Ppxlib__.Ast_pattern0.tval class_structure : self:(Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> fields:(Ppxlib__.Import.class_field list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_structure, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcty_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcty_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcty_constr : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pcty_signature : (Ppxlib__.Import.class_signature, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcty_arrow : (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'd) Ppxlib__.Ast_pattern0.tval pcty_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'c) Ppxlib__.Ast_pattern0.tval pctf_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'c) Ppxlib__.Ast_pattern0.tval pctf_inherit : (Ppxlib__.Import.class_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_val : (string Ppxlib__.Import.loc * Ppxlib__.Import.mutable_flag * Ppxlib__.Import.virtual_flag * Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_method : (string Ppxlib__.Import.loc * Ppxlib__.Import.private_flag * Ppxlib__.Import.virtual_flag * Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_constraint : (Ppxlib__.Import.core_type * Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_attribute : (Ppxlib__.Import.attribute, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval pctf_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.class_type_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval closed : (Ppxlib__.Import.closed_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval open_ : (Ppxlib__.Import.closed_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval 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.tval pconst_char : (char, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'a, 'b) Ppxlib__.Ast_pattern0.tval 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.tval 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.tval pcstr_tuple : (Ppxlib__.Import.core_type list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constructor_arguments, 'a, 'b) Ppxlib__.Ast_pattern0.tval pcstr_record : (Ppxlib__.Import.label_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constructor_arguments, 'a, 'b) Ppxlib__.Ast_pattern0.tval constructor_declaration_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constructor_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constructor_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval ptyp_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_any : (Ppxlib__.Import.core_type, 'a, 'a) Ppxlib__.Ast_pattern0.tval ptyp_var : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptyp_arrow : (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'd) Ppxlib__.Ast_pattern0.tval ptyp_tuple : (Ppxlib__.Import.core_type list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptyp_constr : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_object : ((string Ppxlib__.Import.loc * Ppxlib__.Import.attributes * Ppxlib__.Import.core_type) list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.closed_flag, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_class : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_alias : (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (string, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_variant : (Ppxlib__.Import.row_field list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.closed_flag, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.label list option, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'd) Ppxlib__.Ast_pattern0.tval ptyp_poly : (string Ppxlib__.Import.loc list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptyp_package : (Ppxlib__.Import.package_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptyp_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval upto : (Ppxlib__.Import.direction_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval downto_ : (Ppxlib__.Import.direction_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval pdir_none : (Ppxlib__.Import.directive_argument, 'a, 'a) Ppxlib__.Ast_pattern0.tval pdir_string : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'b) Ppxlib__.Ast_pattern0.tval 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.tval pdir_ident : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'b) Ppxlib__.Ast_pattern0.tval pdir_bool : (bool, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_ident : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_constant : (Ppxlib__.Import.constant, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_let : (Ppxlib__.Import.rec_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_function : (Ppxlib__.Import.case list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_fun : (Ppxlib__.Import.arg_label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'e) Ppxlib__.Ast_pattern0.tval pexp_apply : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> ((Ppxlib__.Import.arg_label * Ppxlib__.Import.expression) list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_match : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.case list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_try : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.case list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_tuple : (Ppxlib__.Import.expression list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_construct : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_variant : (Ppxlib__.Import.label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_record : ((Ppxlib__.Import.longident_loc * Ppxlib__.Import.expression) list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_field : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_setfield : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_array : (Ppxlib__.Import.expression list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_ifthenelse : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_sequence : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_while : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_for : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.direction_flag, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'e, 'f) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'f) Ppxlib__.Ast_pattern0.tval pexp_constraint : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_coerce : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_send : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (string, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_new : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval 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.tval pexp_override : ((string Ppxlib__.Import.loc * Ppxlib__.Import.expression) list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_letmodule : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_letexception : (Ppxlib__.Import.extension_constructor, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_assert : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_lazy : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_poly : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_object : (Ppxlib__.Import.class_structure, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_newtype : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'c) Ppxlib__.Ast_pattern0.tval pexp_pack : (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_open : (Ppxlib__.Import.override_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'd) Ppxlib__.Ast_pattern0.tval pexp_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.tval pexp_unreachable : (Ppxlib__.Import.expression, 'a, 'a) Ppxlib__.Ast_pattern0.tval extension_constructor_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.extension_constructor, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.extension_constructor, 'a, 'c) Ppxlib__.Ast_pattern0.tval extension_constructor : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> kind:(Ppxlib__.Import.extension_constructor_kind, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.extension_constructor, 'a, 'c) Ppxlib__.Ast_pattern0.tval pext_decl : (Ppxlib__.Import.constructor_arguments, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.extension_constructor_kind, 'a, 'c) Ppxlib__.Ast_pattern0.tval pext_rebind : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.extension_constructor_kind, 'a, 'b) Ppxlib__.Ast_pattern0.tval include_infos_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> ('c Ppxlib__.Import.include_infos, 'b, 'd) Ppxlib__.Ast_pattern0.t ‑> ('c Ppxlib__.Import.include_infos, 'a, 'd) Ppxlib__.Ast_pattern0.tval include_infos : mod_:('a, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> ('a Ppxlib__.Import.include_infos, 'b, 'c) Ppxlib__.Ast_pattern0.tval label_declaration_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.label_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.label_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval 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.tval lident : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.tval ldot : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (string, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'a, 'c) Ppxlib__.Ast_pattern0.tval lapply : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'a, 'c) Ppxlib__.Ast_pattern0.tval module_binding_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_binding, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_binding, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval module_declaration_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval pmod_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmod_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmod_ident : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmod_structure : (Ppxlib__.Import.structure, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmod_functor : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'd) Ppxlib__.Ast_pattern0.tval pmod_apply : (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmod_constraint : (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmod_unpack : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmod_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmty_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmty_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmty_ident : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmty_signature : (Ppxlib__.Import.signature, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmty_functor : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'd) Ppxlib__.Ast_pattern0.tval pmty_with : (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.with_constraint list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'c) Ppxlib__.Ast_pattern0.tval pmty_typeof : (Ppxlib__.Import.module_expr, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmty_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval pmty_alias : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type, 'a, 'b) Ppxlib__.Ast_pattern0.tval module_type_declaration_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.module_type_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval immutable : (Ppxlib__.Import.mutable_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval mutable_ : (Ppxlib__.Import.mutable_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval open_description_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.open_description, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.open_description, 'a, 'c) Ppxlib__.Ast_pattern0.tval open_description : lid:(Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> override:(Ppxlib__.Import.override_flag, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.open_description, 'a, 'c) Ppxlib__.Ast_pattern0.tval override : (Ppxlib__.Import.override_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval fresh : (Ppxlib__.Import.override_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval ppat_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_any : (Ppxlib__.Import.pattern, 'a, 'a) Ppxlib__.Ast_pattern0.tval ppat_var : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval 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.tval ppat_constant : (Ppxlib__.Import.constant, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_interval : (Ppxlib__.Import.constant, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.constant, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_tuple : (Ppxlib__.Import.pattern list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_construct : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_variant : (Ppxlib__.Import.label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_record : ((Ppxlib__.Import.longident_loc * Ppxlib__.Import.pattern) list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.closed_flag, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_array : (Ppxlib__.Import.pattern list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_or : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_constraint : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval ppat_type : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_lazy : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_unpack : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_exception : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat_open : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.pattern, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr : (Ppxlib__.Import.structure, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.payload, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig : (Ppxlib__.Import.signature, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.payload, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptyp : (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.payload, 'a, 'b) Ppxlib__.Ast_pattern0.tval ppat : (Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.expression option, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.payload, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval private_ : (Ppxlib__.Import.private_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval public : (Ppxlib__.Import.private_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval nonrecursive : (Ppxlib__.Import.rec_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval recursive : (Ppxlib__.Import.rec_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval rtag : (Ppxlib__.Import.label, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.attributes, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (bool, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.core_type list, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.row_field, 'a, 'e) Ppxlib__.Ast_pattern0.tval rinherit : (Ppxlib__.Import.core_type, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.row_field, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval psig_value : (Ppxlib__.Import.value_description, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_type : (Ppxlib__.Import.rec_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval psig_typext : (Ppxlib__.Import.type_extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_exception : (Ppxlib__.Import.extension_constructor, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_module : (Ppxlib__.Import.module_declaration, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_recmodule : (Ppxlib__.Import.module_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_modtype : (Ppxlib__.Import.module_type_declaration, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_open : (Ppxlib__.Import.open_description, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_include : (Ppxlib__.Import.include_description, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_class : (Ppxlib__.Import.class_description list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_class_type : (Ppxlib__.Import.class_type_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_attribute : (Ppxlib__.Import.attribute, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval psig_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.attributes, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.signature_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr_loc : (Ppxlib__.Import.location, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr_eval : (Ppxlib__.Import.expression, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.attributes, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr_value : (Ppxlib__.Import.rec_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr_primitive : (Ppxlib__.Import.value_description, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_type : (Ppxlib__.Import.rec_flag, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval pstr_typext : (Ppxlib__.Import.type_extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_exception : (Ppxlib__.Import.extension_constructor, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_module : (Ppxlib__.Import.module_binding, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_recmodule : (Ppxlib__.Import.module_binding list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_modtype : (Ppxlib__.Import.module_type_declaration, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_open : (Ppxlib__.Import.open_description, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_class : (Ppxlib__.Import.class_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_class_type : (Ppxlib__.Import.class_type_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_include : (Ppxlib__.Import.include_declaration, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_attribute : (Ppxlib__.Import.attribute, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'b) Ppxlib__.Ast_pattern0.tval pstr_extension : (Ppxlib__.Import.extension, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.attributes, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.structure_item, 'a, 'c) Ppxlib__.Ast_pattern0.tval ptop_def : (Ppxlib__.Import.structure, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.toplevel_phrase, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptop_dir : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.directive_argument, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.toplevel_phrase, 'a, 'c) Ppxlib__.Ast_pattern0.tval type_declaration_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration, 'a, 'c) Ppxlib__.Ast_pattern0.tval type_declaration : name:(string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> params:((Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> cstrs:((Ppxlib__.Import.core_type * Ppxlib__.Import.core_type * Ppxlib__.Import.location) list, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> kind:(Ppxlib__.Import.type_kind, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> private_:(Ppxlib__.Import.private_flag, 'e, 'f) Ppxlib__.Ast_pattern0.t ‑> manifest:(Ppxlib__.Import.core_type option, 'f, 'g) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration, 'a, 'g) Ppxlib__.Ast_pattern0.tval type_extension_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_extension, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_extension, 'a, 'c) Ppxlib__.Ast_pattern0.tval type_extension : path:(Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> params:((Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> constructors:(Ppxlib__.Import.extension_constructor list, 'c, 'd) Ppxlib__.Ast_pattern0.t ‑> private_:(Ppxlib__.Import.private_flag, 'd, 'e) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_extension, 'a, 'e) Ppxlib__.Ast_pattern0.tval ptype_abstract : (Ppxlib__.Import.type_kind, 'a, 'a) Ppxlib__.Ast_pattern0.tval ptype_variant : (Ppxlib__.Import.constructor_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_kind, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptype_record : (Ppxlib__.Import.label_declaration list, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_kind, 'a, 'b) Ppxlib__.Ast_pattern0.tval ptype_open : (Ppxlib__.Import.type_kind, 'a, 'a) Ppxlib__.Ast_pattern0.tval value_binding_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding, 'a, 'c) Ppxlib__.Ast_pattern0.tval value_binding : pat:(Ppxlib__.Import.pattern, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> expr:(Ppxlib__.Import.expression, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_binding, 'a, 'c) Ppxlib__.Ast_pattern0.tval value_description_attributes : (Ppxlib__.Import.attributes, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_description, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.value_description, 'a, 'c) Ppxlib__.Ast_pattern0.tval 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.tval covariant : (Ppxlib__.Import.variance, 'a, 'a) Ppxlib__.Ast_pattern0.tval contravariant : (Ppxlib__.Import.variance, 'a, 'a) Ppxlib__.Ast_pattern0.tval invariant : (Ppxlib__.Import.variance, 'a, 'a) Ppxlib__.Ast_pattern0.tval virtual_ : (Ppxlib__.Import.virtual_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval concrete : (Ppxlib__.Import.virtual_flag, 'a, 'a) Ppxlib__.Ast_pattern0.tval pwith_type : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.type_declaration, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.with_constraint, 'a, 'c) Ppxlib__.Ast_pattern0.tval pwith_module : (Ppxlib__.Import.longident, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.with_constraint, 'a, 'c) Ppxlib__.Ast_pattern0.tval pwith_typesubst : (Ppxlib__.Import.type_declaration, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.with_constraint, 'a, 'b) Ppxlib__.Ast_pattern0.tval pwith_modsubst : (string, 'a, 'b) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.longident, 'b, 'c) Ppxlib__.Ast_pattern0.t ‑> (Ppxlib__.Import.with_constraint, 'a, 'c) Ppxlib__.Ast_pattern0.tval true_ : (Ppxlib__.Import.bool, 'a, 'a) tval false_ : (Ppxlib__.Import.bool, 'a, 'a) tval eint : (Ppxlib__.Import.int, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval echar : (Ppxlib__.Import.char, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval estring : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval efloat : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval eint32 : (Ppxlib__.Import.int32, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval eint64 : (Ppxlib__.Import.int64, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval enativeint : (Ppxlib__.Import.nativeint, 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'a, 'b) tval pint : (Ppxlib__.Import.int, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pchar : (Ppxlib__.Import.char, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pstring : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pfloat : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pint32 : (Ppxlib__.Import.int32, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pint64 : (Ppxlib__.Import.int64, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval pnativeint : (Ppxlib__.Import.nativeint, 'a, 'b) t ‑> (Ppxlib__.Import.pattern, 'a, 'b) tval single_expr_payload : (Ppxlib__.Import.expression, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'a, 'b) tval no_label : (Ppxlib__.Import.expression, 'a, 'b) t ‑> (Ppxlib__.Import.Asttypes.arg_label * Ppxlib__.Import.expression, 'a, 'b) tval attribute : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'b, 'c) t ‑> (Ppxlib__.Import.attribute, 'a, 'c) tval extension : (Ppxlib__.Import.string, 'a, 'b) t ‑> (Ppxlib__.Import.payload, 'b, 'c) t ‑> (Ppxlib__.Import.attribute, 'a, 'c) tval elist : (Ppxlib__.Import.expression, 'a ‑> 'a, 'b) t ‑> (Ppxlib__.Import.expression, 'b Ppxlib__.Import.list ‑> 'c, 'c) tval of_func : (context ‑> Ppxlib.Location.t ‑> 'a ‑> 'b ‑> 'c) ‑> ('a, 'b, 'c) tval to_func : ('a, 'b, 'c) t ‑> context ‑> Ppxlib.Location.t ‑> 'a ‑> 'b ‑> 'c