[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Argument lists



    Date: Mon, 23 Jun 1986  21:23 EDT
    From: Scott E. Fahlman <Fahlman at C.CS.CMU.EDU>

    The section on argument lists consistently says "is an error" and not
    "signals an error".  I can't remember (or imagine) why these cases
    aren't required to signal an error, and I think this should be fixed.
    Does anyone disagree?  Are there any implementations out there that
    don't signal errors when a function is given too many or too few args?

There are plenty of Lisp and Scheme implementations which have a mode
in which such errors are not signalled or reliably detected.  The two
which spring to my mind are Maclisp and T, but I suspect that any Lisp
that has a similar go-for-the-speed feature (PSL?  Rutgers/UCI Lisp?
...) will fail to signal an error when a compiled function of a fixed
number of arguments is passed a wrong number of arguments.  I can't
say I know of any such Common Lisp implementation, but it's certainly
easy to imagine one.

I don't see why this situation should be any different from any other
kind of domain error, like AREF'ing out of bounds.  You can certainly
get speed improvements on stock hardware if you don't check number of
arguments (you can eliminate a compare instruction, save space, etc.).
Consistency is more important than speed, of course: if, for whatever
reason, an error must be signalled in this case, then so should errors
be signalled in most places which are now defined to "be an error".
Otherwise, on what principle do you distinguish these two kinds of
situation?

Jonathan