Module Call_kind.Effect
Algebraic 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 | Perform of {}| Reperform of {eff : Flambda2_term_basics.Simple.t;cont : Flambda2_term_basics.Simple.t;last_fiber : Flambda2_term_basics.Simple.t;
}| Run_stack of {stack : Flambda2_term_basics.Simple.t;f : Flambda2_term_basics.Simple.t;arg : Flambda2_term_basics.Simple.t;
}| Resume of {stack : Flambda2_term_basics.Simple.t;f : Flambda2_term_basics.Simple.t;arg : Flambda2_term_basics.Simple.t;last_fiber : Flambda2_term_basics.Simple.t;
}
include Flambda2_nominal.Contains_names.S
with type t := Flambda2_terms.Call_kind.Effect.t
val free_names :
Flambda2_terms.Call_kind.Effect.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 :
Flambda2_terms.Call_kind.Effect.t ->
Flambda2_nominal.Renaming.t ->
Flambda2_terms.Call_kind.Effect.tApply a renaming throughout a term.
val perform :
eff:Flambda2_term_basics.Simple.t ->
Flambda2_terms.Call_kind.Effect.tval reperform :
eff:Flambda2_term_basics.Simple.t ->
cont:Flambda2_term_basics.Simple.t ->
last_fiber:Flambda2_term_basics.Simple.t ->
Flambda2_terms.Call_kind.Effect.tval run_stack :
stack:Flambda2_term_basics.Simple.t ->
f:Flambda2_term_basics.Simple.t ->
arg:Flambda2_term_basics.Simple.t ->
Flambda2_terms.Call_kind.Effect.tval resume :
stack:Flambda2_term_basics.Simple.t ->
f:Flambda2_term_basics.Simple.t ->
arg:Flambda2_term_basics.Simple.t ->
last_fiber:Flambda2_term_basics.Simple.t ->
Flambda2_terms.Call_kind.Effect.t