Runtime callable for effectful qualified Lisp symbols.
Values such as tool/search are not plain functions: they need an evaluator
context to enforce limits, record traces, and call the configured runtime
executor. The persisted value only carries the qualified name. A short-lived
bound form is created at application time for higher-order runtime calls.
Summary
Types
@type namespace() :: :tool
@type t() :: %PtcRunner.Lisp.RuntimeCallable{ do_eval: (term(), PtcRunner.Lisp.Eval.Context.t() -> {:ok, term(), PtcRunner.Lisp.Eval.Context.t()} | {:error, term()}) | nil, eval_ctx: PtcRunner.Lisp.Eval.Context.t() | nil, name: atom(), namespace: namespace() }
Functions
@spec bind(t(), PtcRunner.Lisp.Eval.Context.t(), function()) :: t()
@spec invoke(t(), [term()], PtcRunner.Lisp.Eval.Context.t()) :: {:ok, term(), PtcRunner.Lisp.Eval.Context.t()} | {:error, term()}
@spec with_context(PtcRunner.Lisp.Eval.Context.t(), function(), (-> term())) :: term()