Module Flambda2_terms.Call_kind
Classification of application expressions.
module Function_call : sig ... endmodule Method_kind : sig ... endmodule Effect : sig ... endAlgebraic effect operations. The corresponding Apply_expr will have the callee set to None and an empty argument list for these. This is done to ensure there is no confusion between the different Simples.
type t = private | Function of {function_call : Function_call.t;
}| Method of {kind : Method_kind.t;obj : Flambda2_term_basics.Simple.t;
}| C_call of {needs_caml_c_call : bool;is_c_builtin : bool;effects : Effects.t;coeffects : Coeffects.t;
}| Effect of Effect.t
Whether an application expression corresponds to an OCaml function invocation, an OCaml method invocation, or an external call.
include Expr_std.S with type t := t
val print : Format.formatter -> t -> unitinclude Flambda2_nominal.Contains_names.S with type t := t
val free_names : t -> Flambda2_nominal.Name_occurrences.tCompute the free names of a term. Such computation covers all kinds of bindable names (variables, continuations, ...)
val apply_renaming : t -> Flambda2_nominal.Renaming.t -> tApply a renaming throughout a term.
include Flambda2_nominal.Contains_ids.S with type t := t
val ids_for_export : t -> Flambda2_nominal.Ids_for_export.tGather all table identifiers to export them.
val direct_function_call : Flambda2_identifiers.Code_id.t -> tval indirect_function_call_unknown_arity : tval indirect_function_call_known_arity :
code_ids:Flambda2_identifiers.Code_id.Set.t Flambda2_lattices.Or_unknown.t ->
tval method_call : Method_kind.t -> obj:Flambda2_term_basics.Simple.t -> tval c_call :
needs_caml_c_call:bool ->
is_c_builtin:bool ->
effects:Effects.t ->
coeffects:Coeffects.t ->
t