pub fn bind_fn_params_positional(
arity: &CljxFnArity,
args: &[Value],
env: &mut Env,
) -> EvalResult<()>Expand description
Bind only the named parameters — the positional slots and the rest list — leaving the arity’s destructuring patterns unexpanded.
For the IR tier: the lowered prologue expands those same patterns into
explicit IR bindings (lower_fn_body_destructured), and the ANF lowerer
never emits LoadLocal, so a destructured name is only ever read as an IR
register — the env copy is unobservable. Producing it anyway would not be
free, though: an :or default is evaluated eagerly, exactly as
(get m :k default) evaluates its third argument, so a side-effecting
default would fire once here and once in the prologue — twice per call.