Adapts plain host callbacks to evaluator context and effect semantics.
Host functions cannot thread an Eval.Context through their return value.
This module owns the scoped process-local binding that lets runtime helpers
recover that context, and the capture brackets used when a host callback may
evaluate Lisp. Expression evaluation, callable dispatch, and effect algebra
remain owned by their respective evaluator modules.
Summary
Functions
@spec capture_effects(PtcRunner.Lisp.Eval.Context.t(), function(), (-> term())) :: {:ok, term(), PtcRunner.Lisp.Eval.Effects.t()} | {:error, :error | :exit | :throw, term(), Exception.stacktrace(), PtcRunner.Lisp.Eval.Effects.t()}
@spec current() :: {PtcRunner.Lisp.Eval.Context.t(), function()} | nil
@spec run_outcome(PtcRunner.Lisp.Eval.Context.t(), function(), (-> term())) :: term()
@spec run_value(PtcRunner.Lisp.Eval.Context.t(), function(), (-> term())) :: PtcRunner.Lisp.Eval.Capture.value_result()
@spec with_context(PtcRunner.Lisp.Eval.Context.t(), function(), (-> term())) :: term()
@spec with_materialized_context( PtcRunner.Lisp.Eval.Context.t(), function(), (PtcRunner.Lisp.Eval.Context.t() -> term()) ) :: term()