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

Inconsistent and UnInformative Error Messages



    Date: 11 MAR 1980 0221-EST
    From: KMP,ALAN at MIT-MC
    Sent-by: ___023 at MIT-MC

    ((LAMBDA (X Y) (+ X Y)) 1 . 2)
    ;((? 1 NIL NIL) (X Y)) TOO MANY ARGUMENTS SUPPLIED - APPLY

    ((LAMBDA (X Y) (+ X Y)) 2 . 3)
    ;#201300 UNEVALUABLE DATUM - EVAL

    ((LAMBDA (X Y) (+ X Y)) 3 . 4)
    ;LAMBDA UNDEFINED FUNCTION OBJECT

    ((LAMBDA (X Y) (+ X Y)) 4 . 5)
    ;((? 4 NIL NIL) (X Y)) TOO MANY ARGUMENTS SUPPLIED - APPLY

    ((LAMBDA (X Y) (+ X Y)) 5 . 6)
    ;((? 5 NIL NIL) (X Y)) TOO MANY ARGUMENTS SUPPLIED - APPLY

    (QUIT)
    :KILL

    : We suspect that this generalizes. Perhaps a bit of error checking on
      the poor little actual args list would be in order? This bug was
      uncovered by some poor guy in :TEACH;LISP who had just figured out
      why (LAMBDA (X) X) didn't work and had FINALLY figured out that
      ((LAMBDA (X) ...) ...) was the thing to do in order to suppress the
      LAMBDA UNDEFINED FUNCTION message ... almost. Sigh. 

Of course, this happens because the interpreter is just doing a NULL
check instead of an ATOM check when cdr'ing the argument list.  Hence
it cdr's through the number and into some accumulator, and different
accumulators contain diferrent interesting junk.