- if (lambda->args == AO_LISP_FUNC_LAMBDA)
- args_provided = ao_lisp_cons_length(cons) - 1;
- else
- args_provided = 1;
- if (args_wanted != args_provided)
- return ao_lisp_error(AO_LISP_INVALID, "need %d args, not %d", args_wanted, args_provided);
+ args_provided = ao_lisp_cons_length(cons) - 1;
+ if (lambda->args == AO_LISP_FUNC_LAMBDA) {
+ if (args_wanted != args_provided)
+ return ao_lisp_error(AO_LISP_INVALID, "need %d args, got %d", args_wanted, args_provided);
+ } else {
+ if (args_provided < args_wanted - 1)
+ return ao_lisp_error(AO_LISP_INVALID, "need at least %d args, got %d", args_wanted, args_provided);
+ }
+