Dispatches indirect pmap and pcalls calls to the parallel evaluator.
The adapter accepts already-evaluated arguments. Once a special builtin has been selected, it must not be resolved through the user namespace again: saved and namespace-qualified builtin values remain the builtin even when a same-named user definition exists.
Summary
Types
@type do_eval() :: (term(), PtcRunner.Lisp.Eval.Context.t() -> {:ok, term(), PtcRunner.Lisp.Eval.Context.t()} | {:error, term()})
@type operation() :: :pmap | :pcalls
Functions
@spec invoke(operation(), [term()], PtcRunner.Lisp.Eval.Context.t(), do_eval()) :: {:ok, term(), PtcRunner.Lisp.Eval.Context.t()} | {:error, term()}