Skip to main content

bind_fn_params_positional

Function bind_fn_params_positional 

Source
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.