ppxlib

Standard library for ppx rewriters
IN THIS PACKAGE

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" = expr 

Which 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.t 

which 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 ('a, 'b, 'c) t

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 -> Location.t -> ?on_error:( unit -> 'c ) -> 'a -> 'b -> 'c

Matches a value against a pattern.

module Packed : sig ... end
val __ : ( 'a, 'a -> 'b, 'b ) t

Pattern that captures its input.

val __' : ( 'a, 'a Loc.t -> 'b, 'b ) t

Same 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 : ( 'a, 'b, 'c ) t -> ( 'a, 'b, 'c ) t -> ( 'a, 'b, 'c ) t

alt stands for `alternatives'. It matches either the first pattern or the second one.

val alt_option : ( 'a, 'v -> 'b, 'c ) t -> ( 'a, 'b, 'c ) t -> ( 'a, 'v option -> 'b, 'c ) t

Same as alt, for the common case where the left-hand-side captures a value but not the right-hand-side.

val (|||) : ( 'a, 'b, 'c ) t -> ( 'a, 'b, 'c ) t -> ( 'a, 'b, 'c ) t

Same as alt

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

Same as map

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 : ( _ list, 'a, 'a ) t
val (^::) : ( 'a, 'b, 'c ) t -> ( 'a list, 'c, 'd ) t -> ( 'a list, 'b, 'd ) t
val many : ( 'a, 'b -> 'b, 'c ) t -> ( 'a list, 'c list -> 'd, 'd ) t
val int : int -> ( int, 'a, 'a ) t
val char : char -> ( char, 'a, 'a ) t
val string : string -> ( string, 'a, 'a ) t
val float : float -> ( float, 'a, 'a ) t
val int32 : int32 -> ( int32, 'a, 'a ) t
val int64 : int64 -> ( int64, 'a, 'a ) t
val nativeint : nativeint -> ( nativeint, 'a, 'a ) t
val bool : bool -> ( bool, 'a, 'a ) t
val cst : to_string:( 'a -> string ) -> ?equal:( 'a -> 'a -> bool ) -> 'a -> ( 'a, 'b, 'b ) t
val none : ( _ option, 'a, 'a ) t
val some : ( 'a, 'b, 'c ) t -> ( 'a 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, 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

AST patterns for each constructor/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 instance 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) t
val nolabel : ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'a ) Ppxlib__Ast_pattern0.t
val labelled : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t
val optional : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t
val binding_op : op:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> pat:( Astlib.Ast_412.Parsetree.pattern, 'b, 'c ) Ppxlib__Ast_pattern0.t -> exp:( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.binding_op, 'a, 'd ) Ppxlib__Ast_pattern0.t
val case : lhs:( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> guard: ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> rhs:( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.case, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pcl_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcl_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcl_constr : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcl_structure : ( Astlib.Ast_412.Parsetree.class_structure, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcl_fun : ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'd, 'e ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'e ) Ppxlib__Ast_pattern0.t
val pcl_apply : ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( (Astlib.Ast_412.Asttypes.arg_label * Astlib.Ast_412.Parsetree.expression) list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcl_let : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pcl_constraint : ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcl_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcl_open : ( Astlib.Longident.t Astlib.Location.loc Astlib.Ast_412.Parsetree.open_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcf_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcf_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcf_inherit : ( Astlib.Ast_412.Asttypes.override_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( string Astlib.Location.loc option, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pcf_val : ( string Astlib.Location.loc * Astlib.Ast_412.Asttypes.mutable_flag * Astlib.Ast_412.Parsetree.class_field_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcf_method : ( string Astlib.Location.loc * Astlib.Ast_412.Asttypes.private_flag * Astlib.Ast_412.Parsetree.class_field_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcf_constraint : ( Astlib.Ast_412.Parsetree.core_type * Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcf_initializer : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcf_attribute : ( Astlib.Ast_412.Parsetree.attribute, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcf_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val cfk_virtual : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t
val cfk_concrete : ( Astlib.Ast_412.Asttypes.override_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_field_kind, 'a, 'c ) Ppxlib__Ast_pattern0.t
val class_infos_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.class_infos, 'b, 'd ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.class_infos, 'a, 'd ) Ppxlib__Ast_pattern0.t
val class_infos : virt:( Astlib.Ast_412.Asttypes.virtual_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> params: ( (Astlib.Ast_412.Parsetree.core_type * (Astlib.Ast_412.Asttypes.variance * Astlib.Ast_412.Asttypes.injectivity)) list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> name:( string, 'c, 'd ) Ppxlib__Ast_pattern0.t -> expr:( 'e, 'd, 'f ) Ppxlib__Ast_pattern0.t -> ( 'e Astlib.Ast_412.Parsetree.class_infos, 'a, 'f ) Ppxlib__Ast_pattern0.t
val class_signature : self:( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> fields: ( Astlib.Ast_412.Parsetree.class_type_field list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_signature, 'a, 'c ) Ppxlib__Ast_pattern0.t
val class_structure : self:( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> fields: ( Astlib.Ast_412.Parsetree.class_field list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_structure, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcty_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcty_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcty_constr : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcty_signature : ( Astlib.Ast_412.Parsetree.class_signature, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcty_arrow : ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pcty_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcty_open : ( Astlib.Longident.t Astlib.Location.loc Astlib.Ast_412.Parsetree.open_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pctf_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pctf_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pctf_inherit : ( Astlib.Ast_412.Parsetree.class_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pctf_constraint : ( Astlib.Ast_412.Parsetree.core_type * Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pctf_attribute : ( Astlib.Ast_412.Parsetree.attribute, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pctf_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.class_type_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val closed : ( Astlib.Ast_412.Asttypes.closed_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val open_ : ( Astlib.Ast_412.Asttypes.closed_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val pconst_integer : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( char option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constant, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pconst_char : ( char, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constant, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pconst_string : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Location.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( string option, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constant, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pconst_float : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( char option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constant, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pcstr_tuple : ( Astlib.Ast_412.Parsetree.core_type list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constructor_arguments, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pcstr_record : ( Astlib.Ast_412.Parsetree.label_declaration list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constructor_arguments, 'a, 'b ) Ppxlib__Ast_pattern0.t
val constructor_declaration_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constructor_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constructor_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val constructor_declaration : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> args: ( Astlib.Ast_412.Parsetree.constructor_arguments, 'b, 'c ) Ppxlib__Ast_pattern0.t -> res: ( Astlib.Ast_412.Parsetree.core_type option, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constructor_declaration, 'a, 'd ) Ppxlib__Ast_pattern0.t
val ptyp_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_any : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'a ) Ppxlib__Ast_pattern0.t
val ptyp_var : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptyp_arrow : ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'd ) Ppxlib__Ast_pattern0.t
val ptyp_tuple : ( Astlib.Ast_412.Parsetree.core_type list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptyp_constr : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_object : ( Astlib.Ast_412.Parsetree.object_field list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.closed_flag, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_class : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_alias : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( string, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_variant : ( Astlib.Ast_412.Parsetree.row_field list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.closed_flag, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( string list option, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'd ) Ppxlib__Ast_pattern0.t
val ptyp_poly : ( string Astlib.Location.loc list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptyp_package : ( Astlib.Longident.t Astlib.Location.loc * (Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_412.Parsetree.core_type) list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptyp_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val upto : ( Astlib.Ast_412.Asttypes.direction_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val downto_ : ( Astlib.Ast_412.Asttypes.direction_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val pdira_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.directive_argument, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.directive_argument, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pdir_string : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.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 -> ( Astlib.Ast_412.Parsetree.directive_argument, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pdir_ident : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.directive_argument, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pdir_bool : ( bool, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.directive_argument, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_ident : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_constant : ( Astlib.Ast_412.Parsetree.constant, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_let : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pexp_function : ( Astlib.Ast_412.Parsetree.case list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_fun : ( Astlib.Ast_412.Asttypes.arg_label, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'd, 'e ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'e ) Ppxlib__Ast_pattern0.t
val pexp_apply : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( (Astlib.Ast_412.Asttypes.arg_label * Astlib.Ast_412.Parsetree.expression) list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_match : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.case list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_try : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.case list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_tuple : ( Astlib.Ast_412.Parsetree.expression list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_construct : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_variant : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_record : ( (Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_412.Parsetree.expression) list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_field : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_setfield : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pexp_array : ( Astlib.Ast_412.Parsetree.expression list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_ifthenelse : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pexp_sequence : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_while : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_for : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.direction_flag, 'd, 'e ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'e, 'f ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'f ) Ppxlib__Ast_pattern0.t
val pexp_constraint : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_coerce : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pexp_send : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( string, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_new : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_setinstvar : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_override : ( (string Astlib.Location.loc * Astlib.Ast_412.Parsetree.expression) list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_letmodule : ( string option, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'd ) Ppxlib__Ast_pattern0.t
val pexp_letexception : ( Astlib.Ast_412.Parsetree.extension_constructor, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_assert : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_lazy : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_poly : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_object : ( Astlib.Ast_412.Parsetree.class_structure, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_newtype : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_pack : ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_open : ( Astlib.Ast_412.Parsetree.module_expr Astlib.Ast_412.Parsetree.open_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pexp_letop : ( Astlib.Ast_412.Parsetree.letop, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pexp_unreachable : ( Astlib.Ast_412.Parsetree.expression, 'a, 'a ) Ppxlib__Ast_pattern0.t
val extension_constructor_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.extension_constructor, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.extension_constructor, 'a, 'c ) Ppxlib__Ast_pattern0.t
val extension_constructor : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> kind: ( Astlib.Ast_412.Parsetree.extension_constructor_kind, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.extension_constructor, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pext_decl : ( Astlib.Ast_412.Parsetree.constructor_arguments, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.extension_constructor_kind, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pext_rebind : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.extension_constructor_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t
val unit : ( Astlib.Ast_412.Parsetree.functor_parameter, 'a, 'a ) Ppxlib__Ast_pattern0.t
val named : ( string option, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.functor_parameter, 'a, 'c ) Ppxlib__Ast_pattern0.t
val include_infos_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.include_infos, 'b, 'd ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.include_infos, 'a, 'd ) Ppxlib__Ast_pattern0.t
val include_infos : mod_:( 'a, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( 'a Astlib.Ast_412.Parsetree.include_infos, 'b, 'c ) Ppxlib__Ast_pattern0.t
val injective : ( Astlib.Ast_412.Asttypes.injectivity, 'a, 'a ) Ppxlib__Ast_pattern0.t
val noinjectivity : ( Astlib.Ast_412.Asttypes.injectivity, 'a, 'a ) Ppxlib__Ast_pattern0.t
val label_declaration_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.label_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.label_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val label_declaration : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> mutable_: ( Astlib.Ast_412.Asttypes.mutable_flag, 'b, 'c ) Ppxlib__Ast_pattern0.t -> type_:( Astlib.Ast_412.Parsetree.core_type, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.label_declaration, 'a, 'd ) Ppxlib__Ast_pattern0.t
val letop : let_:( Astlib.Ast_412.Parsetree.binding_op, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ands: ( Astlib.Ast_412.Parsetree.binding_op list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> body:( Astlib.Ast_412.Parsetree.expression, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.letop, 'a, 'd ) Ppxlib__Ast_pattern0.t
val location : start:( Lexing.position, 'a, 'b ) Ppxlib__Ast_pattern0.t -> end_:( Lexing.position, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ghost:( bool, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Location.t, 'a, 'd ) Ppxlib__Ast_pattern0.t
val lident : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ldot : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( string, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'a, 'c ) Ppxlib__Ast_pattern0.t
val lapply : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_binding_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_binding, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_binding, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_binding : name:( string option, 'a, 'b ) Ppxlib__Ast_pattern0.t -> expr:( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_binding, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_declaration_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_declaration : name:( string option, 'a, 'b ) Ppxlib__Ast_pattern0.t -> type_:( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_ident : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmod_structure : ( Astlib.Ast_412.Parsetree.structure_item list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmod_functor : ( Astlib.Ast_412.Parsetree.functor_parameter, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_apply : ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_constraint : ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmod_unpack : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmod_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t
val module_substitution_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_substitution, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_substitution, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_substitution : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> manifest:( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_substitution, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmty_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmty_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmty_ident : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmty_signature : ( Astlib.Ast_412.Parsetree.signature_item list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmty_functor : ( Astlib.Ast_412.Parsetree.functor_parameter, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmty_with : ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.with_constraint list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pmty_typeof : ( Astlib.Ast_412.Parsetree.module_expr, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmty_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pmty_alias : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type, 'a, 'b ) Ppxlib__Ast_pattern0.t
val module_type_declaration_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val module_type_declaration : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> type_: ( Astlib.Ast_412.Parsetree.module_type option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.module_type_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val immutable : ( Astlib.Ast_412.Asttypes.mutable_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val mutable_ : ( Astlib.Ast_412.Asttypes.mutable_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val pof_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pof_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val otag : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val oinherit : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.object_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val open_infos_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.open_infos, 'b, 'd ) Ppxlib__Ast_pattern0.t -> ( 'c Astlib.Ast_412.Parsetree.open_infos, 'a, 'd ) Ppxlib__Ast_pattern0.t
val open_infos : expr:( 'a, 'b, 'c ) Ppxlib__Ast_pattern0.t -> override: ( Astlib.Ast_412.Asttypes.override_flag, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( 'a Astlib.Ast_412.Parsetree.open_infos, 'b, 'd ) Ppxlib__Ast_pattern0.t
val override : ( Astlib.Ast_412.Asttypes.override_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val fresh : ( Astlib.Ast_412.Asttypes.override_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val ppat_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_any : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'a ) Ppxlib__Ast_pattern0.t
val ppat_var : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_alias : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( string, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_constant : ( Astlib.Ast_412.Parsetree.constant, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_interval : ( Astlib.Ast_412.Parsetree.constant, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.constant, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_tuple : ( Astlib.Ast_412.Parsetree.pattern list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_construct : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_variant : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_record : ( (Astlib.Longident.t Astlib.Location.loc * Astlib.Ast_412.Parsetree.pattern) list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Asttypes.closed_flag, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_array : ( Astlib.Ast_412.Parsetree.pattern list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_or : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_constraint : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ppat_type : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_lazy : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_unpack : ( string option, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_exception : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat_open : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr : ( Astlib.Ast_412.Parsetree.structure_item list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig : ( Astlib.Ast_412.Parsetree.signature_item list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptyp : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ppat : ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.expression option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.payload, 'a, 'c ) 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 -> ( Lexing.position, 'a, 'e ) Ppxlib__Ast_pattern0.t
val private_ : ( Astlib.Ast_412.Asttypes.private_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val public : ( Astlib.Ast_412.Asttypes.private_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val nonrecursive : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val recursive : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val prf_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val prf_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'a, 'c ) Ppxlib__Ast_pattern0.t
val rtag : ( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( bool, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.core_type list, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'a, 'd ) Ppxlib__Ast_pattern0.t
val rinherit : ( Astlib.Ast_412.Parsetree.core_type, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.row_field, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val psig_value : ( Astlib.Ast_412.Parsetree.value_description, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_type : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val psig_typesubst : ( Astlib.Ast_412.Parsetree.type_declaration list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_typext : ( Astlib.Ast_412.Parsetree.type_extension, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_exception : ( Astlib.Ast_412.Parsetree.type_exception, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_module : ( Astlib.Ast_412.Parsetree.module_declaration, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_modsubst : ( Astlib.Ast_412.Parsetree.module_substitution, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_recmodule : ( Astlib.Ast_412.Parsetree.module_declaration list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_modtype : ( Astlib.Ast_412.Parsetree.module_type_declaration, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_open : ( Astlib.Longident.t Astlib.Location.loc Astlib.Ast_412.Parsetree.open_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_include : ( Astlib.Ast_412.Parsetree.module_type Astlib.Ast_412.Parsetree.include_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_class : ( Astlib.Ast_412.Parsetree.class_type Astlib.Ast_412.Parsetree.class_infos list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_class_type : ( Astlib.Ast_412.Parsetree.class_type Astlib.Ast_412.Parsetree.class_infos list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_attribute : ( Astlib.Ast_412.Parsetree.attribute, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val psig_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.attribute list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.signature_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr_loc : ( Astlib.Location.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr_eval : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.attribute list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr_value : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr_primitive : ( Astlib.Ast_412.Parsetree.value_description, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_type : ( Astlib.Ast_412.Asttypes.rec_flag, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pstr_typext : ( Astlib.Ast_412.Parsetree.type_extension, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_exception : ( Astlib.Ast_412.Parsetree.type_exception, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_module : ( Astlib.Ast_412.Parsetree.module_binding, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_recmodule : ( Astlib.Ast_412.Parsetree.module_binding list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_modtype : ( Astlib.Ast_412.Parsetree.module_type_declaration, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_open : ( Astlib.Ast_412.Parsetree.module_expr Astlib.Ast_412.Parsetree.open_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_class : ( Astlib.Ast_412.Parsetree.class_expr Astlib.Ast_412.Parsetree.class_infos list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_class_type : ( Astlib.Ast_412.Parsetree.class_type Astlib.Ast_412.Parsetree.class_infos list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_include : ( Astlib.Ast_412.Parsetree.module_expr Astlib.Ast_412.Parsetree.include_infos, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_attribute : ( Astlib.Ast_412.Parsetree.attribute, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'b ) Ppxlib__Ast_pattern0.t
val pstr_extension : ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.attribute list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.structure_item, 'a, 'c ) Ppxlib__Ast_pattern0.t
val toplevel_directive : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> arg: ( Astlib.Ast_412.Parsetree.directive_argument option, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.toplevel_directive, 'a, 'c ) Ppxlib__Ast_pattern0.t
val ptop_def : ( Astlib.Ast_412.Parsetree.structure_item list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.toplevel_phrase, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptop_dir : ( Astlib.Ast_412.Parsetree.toplevel_directive, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.toplevel_phrase, 'a, 'b ) Ppxlib__Ast_pattern0.t
val type_declaration_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration, 'a, 'c ) Ppxlib__Ast_pattern0.t
val type_declaration : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> params: ( (Astlib.Ast_412.Parsetree.core_type * (Astlib.Ast_412.Asttypes.variance * Astlib.Ast_412.Asttypes.injectivity)) list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> cstrs: ( (Astlib.Ast_412.Parsetree.core_type * Astlib.Ast_412.Parsetree.core_type * Astlib.Location.t) list, 'c, 'd ) Ppxlib__Ast_pattern0.t -> kind:( Astlib.Ast_412.Parsetree.type_kind, 'd, 'e ) Ppxlib__Ast_pattern0.t -> private_: ( Astlib.Ast_412.Asttypes.private_flag, 'e, 'f ) Ppxlib__Ast_pattern0.t -> manifest: ( Astlib.Ast_412.Parsetree.core_type option, 'f, 'g ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration, 'a, 'g ) Ppxlib__Ast_pattern0.t
val type_exception_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_exception, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_exception, 'a, 'c ) Ppxlib__Ast_pattern0.t
val type_exception : constructor: ( Astlib.Ast_412.Parsetree.extension_constructor, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_exception, 'a, 'b ) Ppxlib__Ast_pattern0.t
val type_extension_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_extension, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_extension, 'a, 'c ) Ppxlib__Ast_pattern0.t
val type_extension : path:( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> params: ( (Astlib.Ast_412.Parsetree.core_type * (Astlib.Ast_412.Asttypes.variance * Astlib.Ast_412.Asttypes.injectivity)) list, 'b, 'c ) Ppxlib__Ast_pattern0.t -> constructors: ( Astlib.Ast_412.Parsetree.extension_constructor list, 'c, 'd ) Ppxlib__Ast_pattern0.t -> private_: ( Astlib.Ast_412.Asttypes.private_flag, 'd, 'e ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_extension, 'a, 'e ) Ppxlib__Ast_pattern0.t
val ptype_abstract : ( Astlib.Ast_412.Parsetree.type_kind, 'a, 'a ) Ppxlib__Ast_pattern0.t
val ptype_variant : ( Astlib.Ast_412.Parsetree.constructor_declaration list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptype_record : ( Astlib.Ast_412.Parsetree.label_declaration list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_kind, 'a, 'b ) Ppxlib__Ast_pattern0.t
val ptype_open : ( Astlib.Ast_412.Parsetree.type_kind, 'a, 'a ) Ppxlib__Ast_pattern0.t
val value_binding_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding, 'a, 'c ) Ppxlib__Ast_pattern0.t
val value_binding : pat:( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) Ppxlib__Ast_pattern0.t -> expr:( Astlib.Ast_412.Parsetree.expression, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_binding, 'a, 'c ) Ppxlib__Ast_pattern0.t
val value_description_attributes : ( Astlib.Ast_412.Parsetree.attribute list, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_description, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_description, 'a, 'c ) Ppxlib__Ast_pattern0.t
val value_description : name:( string, 'a, 'b ) Ppxlib__Ast_pattern0.t -> type_:( Astlib.Ast_412.Parsetree.core_type, 'b, 'c ) Ppxlib__Ast_pattern0.t -> prim:( string list, 'c, 'd ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.value_description, 'a, 'd ) Ppxlib__Ast_pattern0.t
val covariant : ( Astlib.Ast_412.Asttypes.variance, 'a, 'a ) Ppxlib__Ast_pattern0.t
val contravariant : ( Astlib.Ast_412.Asttypes.variance, 'a, 'a ) Ppxlib__Ast_pattern0.t
val novariance : ( Astlib.Ast_412.Asttypes.variance, 'a, 'a ) Ppxlib__Ast_pattern0.t
val virtual_ : ( Astlib.Ast_412.Asttypes.virtual_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val concrete : ( Astlib.Ast_412.Asttypes.virtual_flag, 'a, 'a ) Ppxlib__Ast_pattern0.t
val pwith_type : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.with_constraint, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pwith_module : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.with_constraint, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pwith_typesubst : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.type_declaration, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.with_constraint, 'a, 'c ) Ppxlib__Ast_pattern0.t
val pwith_modsubst : ( Astlib.Longident.t, 'a, 'b ) Ppxlib__Ast_pattern0.t -> ( Astlib.Longident.t, 'b, 'c ) Ppxlib__Ast_pattern0.t -> ( Astlib.Ast_412.Parsetree.with_constraint, 'a, 'c ) Ppxlib__Ast_pattern0.t
val true_ : ( bool, 'a, 'a ) t
val false_ : ( bool, 'a, 'a ) t
val eint : ( int, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val echar : ( char, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val estring : ( string, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val efloat : ( string, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val eint32 : ( int32, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val eint64 : ( int64, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val enativeint : ( nativeint, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t
val pint : ( int, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pchar : ( char, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pstring : ( string, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pfloat : ( string, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pint32 : ( int32, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pint64 : ( int64, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val pnativeint : ( nativeint, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.pattern, 'a, 'b ) t
val single_expr_payload : ( Astlib.Ast_412.Parsetree.expression, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.payload, 'a, 'b ) t
val attribute : name:( string, 'a, 'b ) t -> payload:( Astlib.Ast_412.Parsetree.payload, 'b, 'c ) t -> ( Astlib.Ast_412.Parsetree.attribute, 'a, 'c ) t
val extension : ( string, 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.payload, 'b, 'c ) t -> ( string Astlib.Location.loc * Astlib.Ast_412.Parsetree.payload, 'a, 'c ) t
val elist : ( Astlib.Ast_412.Parsetree.expression, 'a -> 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'b list -> 'c, 'c ) t
val esequence : ( Astlib.Ast_412.Parsetree.expression, 'a -> 'a, 'b ) t -> ( Astlib.Ast_412.Parsetree.expression, 'b list -> 'c, 'c ) t
type context
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