package ocaml-base-compiler
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=044a2a68f6cfa3d2349257770a340ced14c3940fb4d78414dda0e59e4ff0aa09
doc/ocamlcommon/Lambda/index.html
Module Lambda
type primitive = | Pidentity| Pbytes_to_string| Pbytes_of_string| Pignore| Prevapply| Pdirapply| Pgetglobal of Ident.t| Psetglobal of Ident.t| Pmakeblock of int * Asttypes.mutable_flag * block_shape| Pfield of int| Pfield_computed| Psetfield of int * immediate_or_pointer * initialization_or_assignment| Psetfield_computed of immediate_or_pointer * initialization_or_assignment| Pfloatfield of int| Psetfloatfield of int * initialization_or_assignment| Pduprecord of Types.record_representation * int| Pccall of Primitive.description| Praise of raise_kind| Psequand| Psequor| Pnot| Pnegint| Paddint| Psubint| Pmulint| Pdivint of is_safe| Pmodint of is_safe| Pandint| Porint| Pxorint| Plslint| Plsrint| Pasrint| Pintcomp of integer_comparison| Pcompare_ints| Pcompare_floats| Pcompare_bints of boxed_integer| Poffsetint of int| Poffsetref of int| Pintoffloat| Pfloatofint| Pnegfloat| Pabsfloat| Paddfloat| Psubfloat| Pmulfloat| Pdivfloat| Pfloatcomp of float_comparison| Pstringlength| Pstringrefu| Pstringrefs| Pbyteslength| Pbytesrefu| Pbytessetu| Pbytesrefs| Pbytessets| Pmakearray of array_kind * Asttypes.mutable_flag| Pduparray of array_kind * Asttypes.mutable_flag(*For
*)Pduparray, the argument must be an immutable array. The arguments ofPduparraygive the kind and mutability of the array being *produced* by the duplication.| Parraylength of array_kind| Parrayrefu of array_kind| Parraysetu of array_kind| Parrayrefs of array_kind| Parraysets of array_kind| Pisint| Pisout| Pbintofint of boxed_integer| Pintofbint of boxed_integer| Pcvtbint of boxed_integer * boxed_integer| Pnegbint of boxed_integer| Paddbint of boxed_integer| Psubbint of boxed_integer| Pmulbint of boxed_integer| Pdivbint of {size : boxed_integer;is_safe : is_safe;
}| Pmodbint of {size : boxed_integer;is_safe : is_safe;
}| Pandbint of boxed_integer| Porbint of boxed_integer| Pxorbint of boxed_integer| Plslbint of boxed_integer| Plsrbint of boxed_integer| Pasrbint of boxed_integer| Pbintcomp of boxed_integer * integer_comparison| Pbigarrayref of bool * int * bigarray_kind * bigarray_layout| Pbigarrayset of bool * int * bigarray_kind * bigarray_layout| Pbigarraydim of int| Pstring_load_16 of bool| Pstring_load_32 of bool| Pstring_load_64 of bool| Pbytes_load_16 of bool| Pbytes_load_32 of bool| Pbytes_load_64 of bool| Pbytes_set_16 of bool| Pbytes_set_32 of bool| Pbytes_set_64 of bool| Pbigstring_load_16 of bool| Pbigstring_load_32 of bool| Pbigstring_load_64 of bool| Pbigstring_set_16 of bool| Pbigstring_set_32 of bool| Pbigstring_set_64 of bool| Pctconst of compile_time_constant| Pbswap16| Pbbswap of boxed_integer| Pint_as_pointer| Popaque
and block_shape = value_kind list optionval equal_value_kind : value_kind -> value_kind -> boolval equal_boxed_integer : boxed_integer -> boxed_integer -> booltype structured_constant = | Const_base of Asttypes.constant| Const_pointer of int| Const_block of int * structured_constant list| Const_float_array of string list| Const_immstring of string
val equal_inline_attribute : inline_attribute -> inline_attribute -> boolval equal_specialise_attribute :
specialise_attribute ->
specialise_attribute ->
booltype function_attribute = {inline : inline_attribute;specialise : specialise_attribute;local : local_attribute;is_a_functor : bool;stub : bool;
}type scoped_location = Debuginfo.Scoped_location.ttype lambda = | Lvar of Ident.t| Lconst of structured_constant| Lapply of lambda_apply| Lfunction of lfunction| Llet of let_kind * value_kind * Ident.t * lambda * lambda| Lletrec of (Ident.t * lambda) list * lambda| Lprim of primitive * lambda list * scoped_location| Lswitch of lambda * lambda_switch * scoped_location| Lstringswitch of lambda * (string * lambda) list * lambda option * scoped_location| Lstaticraise of int * lambda list| Lstaticcatch of lambda * int * (Ident.t * value_kind) list * lambda| Ltrywith of lambda * Ident.t * lambda| Lifthenelse of lambda * lambda * lambda| Lsequence of lambda * lambda| Lwhile of lambda * lambda| Lfor of Ident.t * lambda * lambda * Asttypes.direction_flag * lambda| Lassign of Ident.t * lambda| Lsend of meth_kind * lambda * lambda * lambda list * scoped_location| Levent of lambda * lambda_event| Lifused of Ident.t * lambda
and lfunction = {kind : function_kind;params : (Ident.t * value_kind) list;return : value_kind;body : lambda;attr : function_attribute;loc : scoped_location;
}and lambda_apply = {ap_func : lambda;ap_args : lambda list;ap_loc : scoped_location;ap_should_be_tailcall : bool;ap_inlined : inline_attribute;ap_specialised : specialise_attribute;
}and lambda_event = {lev_loc : scoped_location;lev_kind : lambda_event_kind;lev_repr : int ref option;lev_env : Env.t;
}and lambda_event_kind = | Lev_before| Lev_after of Types.type_expr| Lev_function| Lev_pseudo| Lev_module_definition of Ident.t
type program = {module_ident : Ident.t;main_module_block_size : int;required_globals : Ident.Set.t;code : lambda;
}val const_unit : structured_constantval lambda_unit : lambdaiter_head_constructor f lam apply f to only the first level of sub expressions of lam. It does not recursively traverse the expression.
Same as iter_head_constructor, but use a different callback for sub-terms which are in tail position or not.
val transl_prim : string -> string -> lambdaTranslate a value from a persistent module. For instance:
transl_internal_value "CamlinternalLazy" "force"val free_variables : lambda -> Ident.Set.tval transl_module_path : scoped_location -> Env.t -> Path.t -> lambdaval transl_value_path : scoped_location -> Env.t -> Path.t -> lambdaval transl_extension_path : scoped_location -> Env.t -> Path.t -> lambdaval transl_class_path : scoped_location -> Env.t -> Path.t -> lambdaval subst :
(Ident.t -> Types.value_description -> Env.t -> Env.t) ->
lambda Ident.Map.t ->
lambda ->
lambdasubst env_update_fun s lt applies a substitution s to the lambda-term lt.
Assumes that the image of the substitution is out of reach of the bound variables of the lambda-term (no capture).
env_update_fun is used to refresh the environment contained in debug events.
val rename : Ident.t Ident.Map.t -> lambda -> lambdaA version of subst specialized for the case where we're just renaming idents.
Bottom-up rewriting, applying the function on each node from the leaves to the root.
Rewrite each immediate sub-term with the function.
val negate_integer_comparison : integer_comparison -> integer_comparisonval swap_integer_comparison : integer_comparison -> integer_comparisonval negate_float_comparison : float_comparison -> float_comparisonval swap_float_comparison : float_comparison -> float_comparisonval default_function_attribute : function_attributeval default_stub_attribute : function_attributeval function_is_curried : lfunction -> boolval staticfail : lambdaval is_guarded : lambda -> boolval raise_kind : raise_kind -> stringval merge_inline_attributes :
inline_attribute ->
inline_attribute ->
inline_attribute option