Explain why calling a named function conses and lambda doesn't?!?!?!?!



CHESS> (defun black ()
(logior (aref *black* *PAWN*)
(aref *black* *KNIGHT*)
(aref *black* *BISHOP*)
(aref *black* *ROOK*)
(aref *black* *QUEEN*)))

CHESS> (time (dotimes (i 64) (black)))
Evaluation took:
0.0 seconds of real time
0.0 seconds of user run time
0.0 seconds of system run time
0 calls to %EVAL
0 page faults and
4,128 bytes consed.
NIL
CHESS> (time (dotimes (i 64) (funcall (lambda ()
(logior (aref *black* *PAWN*)
(aref *black* *KNIGHT*)
(aref *black* *BISHOP*)
(aref *black* *ROOK*)
(aref *black* *QUEEN*))))))

Evaluation took:
0.0 seconds of real time
0.0 seconds of user run time
0.0 seconds of system run time
0 calls to %EVAL
0 page faults and
0 bytes consed.
NIL

.



Relevant Pages