[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Inconsistent and UnInformative Error Messages
- To: KMP at MIT-MC, ALAN at MIT-MC, BUG-LISP at MIT-MC
- Subject: Inconsistent and UnInformative Error Messages
- From: "Guy L. Steele, Jr." <GLS at MIT-MC>
- Date: Wed, 12 Mar 80 17:05:00 GMT
- Cc: TEACH at MIT-MC
- Original-date: 12 March 1980 12:05-EST
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.