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;
}| With_stack of {valuec : Flambda2_term_basics.Simple.t;exnc : Flambda2_term_basics.Simple.t;effc : Flambda2_term_basics.Simple.t;f : Flambda2_term_basics.Simple.t;arg : Flambda2_term_basics.Simple.t;
}| With_stack_bind of {valuec : Flambda2_term_basics.Simple.t;exnc : Flambda2_term_basics.Simple.t;effc : Flambda2_term_basics.Simple.t;dyn : Flambda2_term_basics.Simple.t;bind : Flambda2_term_basics.Simple.t;f : Flambda2_term_basics.Simple.t;arg : Flambda2_term_basics.Simple.t;
}| Resume of {cont : Flambda2_term_basics.Simple.t;f : Flambda2_term_basics.Simple.t;arg : Flambda2_term_basics.Simple.t;
}
include 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.
val perform : eff:Flambda2_term_basics.Simple.t -> tval reperform :
eff:Flambda2_term_basics.Simple.t ->
cont:Flambda2_term_basics.Simple.t ->
last_fiber:Flambda2_term_basics.Simple.t ->
tval with_stack :
valuec:Flambda2_term_basics.Simple.t ->
exnc:Flambda2_term_basics.Simple.t ->
effc:Flambda2_term_basics.Simple.t ->
f:Flambda2_term_basics.Simple.t ->
arg:Flambda2_term_basics.Simple.t ->
tval with_stack_bind :
valuec:Flambda2_term_basics.Simple.t ->
exnc:Flambda2_term_basics.Simple.t ->
effc:Flambda2_term_basics.Simple.t ->
dyn:Flambda2_term_basics.Simple.t ->
bind:Flambda2_term_basics.Simple.t ->
f:Flambda2_term_basics.Simple.t ->
arg:Flambda2_term_basics.Simple.t ->
tval resume :
cont:Flambda2_term_basics.Simple.t ->
f:Flambda2_term_basics.Simple.t ->
arg:Flambda2_term_basics.Simple.t ->
t