pub fn bind( expr: &QueryExpr, params: &[Value], ) -> Result<QueryExpr, UserParamError>
One-shot helper: validate arity/gaps then substitute the values.