Build Ast helpers with the location argument factorized.
module Located : Ppxlib__.Ast_builder_intf.Located with type a with_loc := a Ppxlib__.Ast_builder_intf.without_locationinclude module type of sig ... endval loc : Location.tval case : lhs:Ppxlib__.Import.pattern ‑> guard:Ppxlib__.Import.expression option ‑> rhs:Ppxlib__.Import.expression ‑> Ppxlib__.Import.caseval pcl_constr : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.core_type list ‑> Ppxlib__.Import.class_exprval pcl_structure : Ppxlib__.Import.class_structure ‑> Ppxlib__.Import.class_exprval pcl_fun : Ppxlib__.Import.arg_label ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.pattern ‑> Ppxlib__.Import.class_expr ‑> Ppxlib__.Import.class_exprval pcl_apply : Ppxlib__.Import.class_expr ‑> (Ppxlib__.Import.arg_label * Ppxlib__.Import.expression) list ‑> Ppxlib__.Import.class_exprval pcl_let : Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.value_binding list ‑> Ppxlib__.Import.class_expr ‑> Ppxlib__.Import.class_exprval pcl_constraint : Ppxlib__.Import.class_expr ‑> Ppxlib__.Import.class_type ‑> Ppxlib__.Import.class_exprval pcl_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.class_exprval pcf_inherit : Ppxlib__.Import.override_flag ‑> Ppxlib__.Import.class_expr ‑> string Ppxlib__.Import.loc option ‑> Ppxlib__.Import.class_fieldval pcf_val : (string Ppxlib__.Import.loc * Ppxlib__.Import.mutable_flag * Ppxlib__.Import.class_field_kind) ‑> Ppxlib__.Import.class_fieldval pcf_method : (string Ppxlib__.Import.loc * Ppxlib__.Import.private_flag * Ppxlib__.Import.class_field_kind) ‑> Ppxlib__.Import.class_fieldval pcf_constraint : (Ppxlib__.Import.core_type * Ppxlib__.Import.core_type) ‑> Ppxlib__.Import.class_fieldval pcf_initializer : Ppxlib__.Import.expression ‑> Ppxlib__.Import.class_fieldval pcf_attribute : Ppxlib__.Import.attribute ‑> Ppxlib__.Import.class_fieldval pcf_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.class_fieldval class_infos : virt:Ppxlib__.Import.virtual_flag ‑> params:(Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list ‑> name:string Ppxlib__.Import.loc ‑> expr:'a ‑> 'a Ppxlib__.Import.class_infosval class_signature : self:Ppxlib__.Import.core_type ‑> fields:Ppxlib__.Import.class_type_field list ‑> Ppxlib__.Import.class_signatureval class_structure : self:Ppxlib__.Import.pattern ‑> fields:Ppxlib__.Import.class_field list ‑> Ppxlib__.Import.class_structureval pcty_constr : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.core_type list ‑> Ppxlib__.Import.class_typeval pcty_signature : Ppxlib__.Import.class_signature ‑> Ppxlib__.Import.class_typeval pcty_arrow : Ppxlib__.Import.arg_label ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.class_type ‑> Ppxlib__.Import.class_typeval pcty_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.class_typeval pctf_inherit : Ppxlib__.Import.class_type ‑> Ppxlib__.Import.class_type_fieldval pctf_val : (string Ppxlib__.Import.loc * Ppxlib__.Import.mutable_flag * Ppxlib__.Import.virtual_flag * Ppxlib__.Import.core_type) ‑> Ppxlib__.Import.class_type_fieldval pctf_method : (string Ppxlib__.Import.loc * Ppxlib__.Import.private_flag * Ppxlib__.Import.virtual_flag * Ppxlib__.Import.core_type) ‑> Ppxlib__.Import.class_type_fieldval pctf_constraint : (Ppxlib__.Import.core_type * Ppxlib__.Import.core_type) ‑> Ppxlib__.Import.class_type_fieldval pctf_attribute : Ppxlib__.Import.attribute ‑> Ppxlib__.Import.class_type_fieldval pctf_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.class_type_fieldval constructor_declaration : name:string Ppxlib__.Import.loc ‑> args:Ppxlib__.Import.constructor_arguments ‑> res:Ppxlib__.Import.core_type option ‑> Ppxlib__.Import.constructor_declarationval ptyp_any : Ppxlib__.Import.core_typeval ptyp_var : string ‑> Ppxlib__.Import.core_typeval ptyp_arrow : Ppxlib__.Import.arg_label ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.core_typeval ptyp_tuple : Ppxlib__.Import.core_type list ‑> Ppxlib__.Import.core_typeval ptyp_constr : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.core_type list ‑> Ppxlib__.Import.core_typeval ptyp_object : (string Ppxlib__.Import.loc * Ppxlib__.Import.attributes * Ppxlib__.Import.core_type) list ‑> Ppxlib__.Import.closed_flag ‑> Ppxlib__.Import.core_typeval ptyp_class : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.core_type list ‑> Ppxlib__.Import.core_typeval ptyp_alias : Ppxlib__.Import.core_type ‑> string ‑> Ppxlib__.Import.core_typeval ptyp_variant : Ppxlib__.Import.row_field list ‑> Ppxlib__.Import.closed_flag ‑> Ppxlib__.Import.label list option ‑> Ppxlib__.Import.core_typeval ptyp_poly : string Ppxlib__.Import.loc list ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.core_typeval ptyp_package : Ppxlib__.Import.package_type ‑> Ppxlib__.Import.core_typeval ptyp_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.core_typeval pexp_ident : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expressionval pexp_constant : Ppxlib__.Import.constant ‑> Ppxlib__.Import.expressionval pexp_let : Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.value_binding list ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_function : Ppxlib__.Import.case list ‑> Ppxlib__.Import.expressionval pexp_fun : Ppxlib__.Import.arg_label ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.pattern ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_apply : Ppxlib__.Import.expression ‑> (Ppxlib__.Import.arg_label * Ppxlib__.Import.expression) list ‑> Ppxlib__.Import.expressionval pexp_match : Ppxlib__.Import.expression ‑> Ppxlib__.Import.case list ‑> Ppxlib__.Import.expressionval pexp_try : Ppxlib__.Import.expression ‑> Ppxlib__.Import.case list ‑> Ppxlib__.Import.expressionval pexp_tuple : Ppxlib__.Import.expression list ‑> Ppxlib__.Import.expressionval pexp_construct : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.expressionval pexp_variant : Ppxlib__.Import.label ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.expressionval pexp_record : (Ppxlib__.Import.longident_loc * Ppxlib__.Import.expression) list ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.expressionval pexp_field : Ppxlib__.Import.expression ‑> Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expressionval pexp_setfield : Ppxlib__.Import.expression ‑> Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_array : Ppxlib__.Import.expression list ‑> Ppxlib__.Import.expressionval pexp_ifthenelse : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression option ‑> Ppxlib__.Import.expressionval pexp_sequence : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_while : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_constraint : Ppxlib__.Import.expression ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.expressionval pexp_coerce : Ppxlib__.Import.expression ‑> Ppxlib__.Import.core_type option ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.expressionval pexp_send : Ppxlib__.Import.expression ‑> string Ppxlib__.Import.loc ‑> Ppxlib__.Import.expressionval pexp_new : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expressionval pexp_setinstvar : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_override : (string Ppxlib__.Import.loc * Ppxlib__.Import.expression) list ‑> Ppxlib__.Import.expressionval pexp_letmodule : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_letexception : Ppxlib__.Import.extension_constructor ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_assert : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_lazy : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_poly : Ppxlib__.Import.expression ‑> Ppxlib__.Import.core_type option ‑> Ppxlib__.Import.expressionval pexp_object : Ppxlib__.Import.class_structure ‑> Ppxlib__.Import.expressionval pexp_newtype : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_pack : Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.expressionval pexp_open : Ppxlib__.Import.override_flag ‑> Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval pexp_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.expressionval pexp_unreachable : Ppxlib__.Import.expressionval extension_constructor : name:string Ppxlib__.Import.loc ‑> kind:Ppxlib__.Import.extension_constructor_kind ‑> Ppxlib__.Import.extension_constructorval include_infos : 'a ‑> 'a Ppxlib__.Import.include_infosval label_declaration : name:string Ppxlib__.Import.loc ‑> mutable_:Ppxlib__.Import.mutable_flag ‑> type_:Ppxlib__.Import.core_type ‑> Ppxlib__.Import.label_declarationval location : start:Ppxlib__.Import.position ‑> end_:Ppxlib__.Import.position ‑> ghost:bool ‑> Ppxlib__.Import.locationval module_binding : name:string Ppxlib__.Import.loc ‑> expr:Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_bindingval module_declaration : name:string Ppxlib__.Import.loc ‑> type_:Ppxlib__.Import.module_type ‑> Ppxlib__.Import.module_declarationval pmod_ident : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.module_exprval pmod_structure : Ppxlib__.Import.structure ‑> Ppxlib__.Import.module_exprval pmod_functor : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.module_type option ‑> Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_exprval pmod_apply : Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_exprval pmod_constraint : Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_type ‑> Ppxlib__.Import.module_exprval pmod_unpack : Ppxlib__.Import.expression ‑> Ppxlib__.Import.module_exprval pmod_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.module_exprval pmty_ident : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.module_typeval pmty_signature : Ppxlib__.Import.signature ‑> Ppxlib__.Import.module_typeval pmty_functor : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.module_type option ‑> Ppxlib__.Import.module_type ‑> Ppxlib__.Import.module_typeval pmty_with : Ppxlib__.Import.module_type ‑> Ppxlib__.Import.with_constraint list ‑> Ppxlib__.Import.module_typeval pmty_typeof : Ppxlib__.Import.module_expr ‑> Ppxlib__.Import.module_typeval pmty_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.module_typeval pmty_alias : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.module_typeval module_type_declaration : name:string Ppxlib__.Import.loc ‑> type_:Ppxlib__.Import.module_type option ‑> Ppxlib__.Import.module_type_declarationval open_description : lid:Ppxlib__.Import.longident_loc ‑> override:Ppxlib__.Import.override_flag ‑> Ppxlib__.Import.open_descriptionval ppat_any : Ppxlib__.Import.patternval ppat_var : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.patternval ppat_alias : Ppxlib__.Import.pattern ‑> string Ppxlib__.Import.loc ‑> Ppxlib__.Import.patternval ppat_constant : Ppxlib__.Import.constant ‑> Ppxlib__.Import.patternval ppat_interval : Ppxlib__.Import.constant ‑> Ppxlib__.Import.constant ‑> Ppxlib__.Import.patternval ppat_tuple : Ppxlib__.Import.pattern list ‑> Ppxlib__.Import.patternval ppat_construct : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.pattern option ‑> Ppxlib__.Import.patternval ppat_variant : Ppxlib__.Import.label ‑> Ppxlib__.Import.pattern option ‑> Ppxlib__.Import.patternval ppat_record : (Ppxlib__.Import.longident_loc * Ppxlib__.Import.pattern) list ‑> Ppxlib__.Import.closed_flag ‑> Ppxlib__.Import.patternval ppat_array : Ppxlib__.Import.pattern list ‑> Ppxlib__.Import.patternval ppat_or : Ppxlib__.Import.pattern ‑> Ppxlib__.Import.pattern ‑> Ppxlib__.Import.patternval ppat_constraint : Ppxlib__.Import.pattern ‑> Ppxlib__.Import.core_type ‑> Ppxlib__.Import.patternval ppat_type : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.patternval ppat_lazy : Ppxlib__.Import.pattern ‑> Ppxlib__.Import.patternval ppat_unpack : string Ppxlib__.Import.loc ‑> Ppxlib__.Import.patternval ppat_exception : Ppxlib__.Import.pattern ‑> Ppxlib__.Import.patternval ppat_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.patternval ppat_open : Ppxlib__.Import.longident_loc ‑> Ppxlib__.Import.pattern ‑> Ppxlib__.Import.patternval position : fname:string ‑> lnum:int ‑> bol:int ‑> cnum:int ‑> Ppxlib__.Import.positionval psig_value : Ppxlib__.Import.value_description ‑> Ppxlib__.Import.signature_itemval psig_type : Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.type_declaration list ‑> Ppxlib__.Import.signature_itemval psig_typext : Ppxlib__.Import.type_extension ‑> Ppxlib__.Import.signature_itemval psig_exception : Ppxlib__.Import.extension_constructor ‑> Ppxlib__.Import.signature_itemval psig_module : Ppxlib__.Import.module_declaration ‑> Ppxlib__.Import.signature_itemval psig_recmodule : Ppxlib__.Import.module_declaration list ‑> Ppxlib__.Import.signature_itemval psig_modtype : Ppxlib__.Import.module_type_declaration ‑> Ppxlib__.Import.signature_itemval psig_open : Ppxlib__.Import.open_description ‑> Ppxlib__.Import.signature_itemval psig_include : Ppxlib__.Import.include_description ‑> Ppxlib__.Import.signature_itemval psig_class : Ppxlib__.Import.class_description list ‑> Ppxlib__.Import.signature_itemval psig_class_type : Ppxlib__.Import.class_type_declaration list ‑> Ppxlib__.Import.signature_itemval psig_attribute : Ppxlib__.Import.attribute ‑> Ppxlib__.Import.signature_itemval psig_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.attributes ‑> Ppxlib__.Import.signature_itemval pstr_eval : Ppxlib__.Import.expression ‑> Ppxlib__.Import.attributes ‑> Ppxlib__.Import.structure_itemval pstr_value : Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.value_binding list ‑> Ppxlib__.Import.structure_itemval pstr_primitive : Ppxlib__.Import.value_description ‑> Ppxlib__.Import.structure_itemval pstr_type : Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.type_declaration list ‑> Ppxlib__.Import.structure_itemval pstr_typext : Ppxlib__.Import.type_extension ‑> Ppxlib__.Import.structure_itemval pstr_exception : Ppxlib__.Import.extension_constructor ‑> Ppxlib__.Import.structure_itemval pstr_module : Ppxlib__.Import.module_binding ‑> Ppxlib__.Import.structure_itemval pstr_recmodule : Ppxlib__.Import.module_binding list ‑> Ppxlib__.Import.structure_itemval pstr_modtype : Ppxlib__.Import.module_type_declaration ‑> Ppxlib__.Import.structure_itemval pstr_open : Ppxlib__.Import.open_description ‑> Ppxlib__.Import.structure_itemval pstr_class : Ppxlib__.Import.class_declaration list ‑> Ppxlib__.Import.structure_itemval pstr_class_type : Ppxlib__.Import.class_type_declaration list ‑> Ppxlib__.Import.structure_itemval pstr_include : Ppxlib__.Import.include_declaration ‑> Ppxlib__.Import.structure_itemval pstr_attribute : Ppxlib__.Import.attribute ‑> Ppxlib__.Import.structure_itemval pstr_extension : Ppxlib__.Import.extension ‑> Ppxlib__.Import.attributes ‑> Ppxlib__.Import.structure_itemval type_declaration : name:string Ppxlib__.Import.loc ‑> params:(Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list ‑> cstrs:(Ppxlib__.Import.core_type * Ppxlib__.Import.core_type * Ppxlib__.Import.location) list ‑> kind:Ppxlib__.Import.type_kind ‑> private_:Ppxlib__.Import.private_flag ‑> manifest:Ppxlib__.Import.core_type option ‑> Ppxlib__.Import.type_declarationval type_extension : path:Ppxlib__.Import.longident_loc ‑> params:(Ppxlib__.Import.core_type * Ppxlib__.Import.variance) list ‑> constructors:Ppxlib__.Import.extension_constructor list ‑> private_:Ppxlib__.Import.private_flag ‑> Ppxlib__.Import.type_extensionval value_binding : pat:Ppxlib__.Import.pattern ‑> expr:Ppxlib__.Import.expression ‑> Ppxlib__.Import.value_bindingval value_description : name:string Ppxlib__.Import.loc ‑> type_:Ppxlib__.Import.core_type ‑> prim:string list ‑> Ppxlib__.Import.value_descriptioninclude Ppxlib__.Ast_builder_intf.Additional_helpers with type a with_loc := a Ppxlib__.Ast_builder_intf.without_locationval eint : (Ppxlib__.Import.int ‑> Ppxlib__.Import.expression) with_locval echar : (Ppxlib__.Import.char ‑> Ppxlib__.Import.expression) with_locval estring : (Ppxlib__.Import.string ‑> Ppxlib__.Import.expression) with_locval efloat : (Ppxlib__.Import.string ‑> Ppxlib__.Import.expression) with_locval eint32 : (Ppxlib__.Import.int32 ‑> Ppxlib__.Import.expression) with_locval eint64 : (Ppxlib__.Import.int64 ‑> Ppxlib__.Import.expression) with_locval enativeint : (Ppxlib__.Import.nativeint ‑> Ppxlib__.Import.expression) with_locval ebool : (Ppxlib__.Import.bool ‑> Ppxlib__.Import.expression) with_locval pint : (Ppxlib__.Import.int ‑> Ppxlib__.Import.pattern) with_locval pchar : (Ppxlib__.Import.char ‑> Ppxlib__.Import.pattern) with_locval pstring : (Ppxlib__.Import.string ‑> Ppxlib__.Import.pattern) with_locval pfloat : (Ppxlib__.Import.string ‑> Ppxlib__.Import.pattern) with_locval pint32 : (Ppxlib__.Import.int32 ‑> Ppxlib__.Import.pattern) with_locval pint64 : (Ppxlib__.Import.int64 ‑> Ppxlib__.Import.pattern) with_locval pnativeint : (Ppxlib__.Import.nativeint ‑> Ppxlib__.Import.pattern) with_locval pbool : (Ppxlib__.Import.bool ‑> Ppxlib__.Import.pattern) with_locval eunit : Ppxlib__.Import.expression with_locval punit : Ppxlib__.Import.pattern with_locval evar : (Ppxlib__.Import.string ‑> Ppxlib__.Import.expression) with_locevar id produces a Pexp_ident _ expression, it parses its input so you can pass
any dot-separated identifier, for instance: evar ~loc "Foo.bar".
val pvar : (Ppxlib__.Import.string ‑> Ppxlib__.Import.pattern) with_locval eapply : (Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression Ppxlib__.Import.list ‑> Ppxlib__.Import.expression) with_locSame as pexp_apply but without labels
val eabstract : (Ppxlib__.Import.pattern Ppxlib__.Import.list ‑> Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression) with_locval esequence : (Ppxlib__.Import.expression Ppxlib__.Import.list ‑> Ppxlib__.Import.expression) with_locval ppat_tuple_opt : (Ppxlib__.Import.pattern Ppxlib__.Import.list ‑> Ppxlib__.Import.pattern Ppxlib__.Import.option) with_locval pexp_tuple_opt : (Ppxlib__.Import.expression Ppxlib__.Import.list ‑> Ppxlib__.Import.expression Ppxlib__.Import.option) with_locval elist : (Ppxlib__.Import.expression Ppxlib__.Import.list ‑> Ppxlib__.Import.expression) with_locval plist : (Ppxlib__.Import.pattern Ppxlib__.Import.list ‑> Ppxlib__.Import.pattern) with_locval pstr_value_list : loc:Location.t ‑> Ppxlib__.Import.Asttypes.rec_flag ‑> Ppxlib__.Import.value_binding Ppxlib__.Import.list ‑> Ppxlib__.Import.structure_item Ppxlib__.Import.listpstr_value_list ~loc rf vbs = pstr_value ~loc rf vbs if vbs <> [], []
otherwise.
val nonrec_type_declaration : (name:Ppxlib__.Import.string Loc.t ‑> params:(Ppxlib__.Import.core_type * Ppxlib__.Import.Asttypes.variance) Ppxlib__.Import.list ‑> cstrs:(Ppxlib__.Import.core_type * Ppxlib__.Import.core_type * Location.t) Ppxlib__.Import.list ‑> kind:Ppxlib__.Import.type_kind ‑> private_:Ppxlib__.Import.Asttypes.private_flag ‑> manifest:Ppxlib__.Import.core_type Ppxlib__.Import.option ‑> Ppxlib__.Import.type_declaration) with_locval unapplied_type_constr_conv : (Longident.t Loc.t ‑> f:(Ppxlib__.Import.string ‑> Ppxlib__.Import.string) ‑> Ppxlib__.Import.expression) with_locunapplied_type_constr_conv is the standard way to map identifiers to conversion
fonctions, for preprocessor that creates values that follow the structure of types.
More precisely, path_conv path (sprintf "sexp_of_%s") is:
type_constr_conv also applies it to a list of expression, which both prevents
the compiler from allocating useless closures, and almost always what is needed,
since type constructors are always applied.val type_constr_conv : (Longident.t Loc.t ‑> f:(Ppxlib__.Import.string ‑> Ppxlib__.Import.string) ‑> Ppxlib__.Import.expression Ppxlib__.Import.list ‑> Ppxlib__.Import.expression) with_locval eta_reduce : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expression Ppxlib__.Import.optionTries to simplify fun v1 v2 .. -> f v1 v2 .. into f. Only works when f is a
path, not an arbitrary expression as that would change the meaning of
the code.
This can be used either for cleaning up the generated code, or to reduce allocation
if f is a local variable (the compiler won't optimize the allocation of the
closure).
Eta-reduction can change the types/behavior in some corner cases that are unlikely to show up in generated code:
f has optional arguments, eta-expanding f can drop themf does side effects before receiving all its arguments, and if
the eta-expansion is partially applied, eta-reducing could change behavior.eta_reduce_if_possible_and_nonrec is meant for the case where the resulting
expression is going to be bound in a potentially recursive let-binding, where
we have to keep the eta-expansion when rec_flag is Recursive to avoid
a compile error.
val eta_reduce_if_possible : Ppxlib__.Import.expression ‑> Ppxlib__.Import.expressionval eta_reduce_if_possible_and_nonrec : Ppxlib__.Import.expression ‑> rec_flag:Ppxlib__.Import.rec_flag ‑> Ppxlib__.Import.expression