jcm@sdf.lonestar.org wrote, On 5/2/09 1:50 AM:
I'm sure there's a simple answer to this question. I'm browsing the sbcl source to find the lowest level implementation of CAR and I found this
(defun car (list) (car list))
So the 'real' definition of CAR must be elsewhere. :) Perhaps in the C source code? Would someone point me to the correct location?
When the compiler encounters car it emits inline code. So try this in sbcl
(defun foo (x) (car x)) (disassemble #'foo)
Compare that with
(defun bar (x) (foo x)) (disassemble #'bar)
The former does not contain any function call, the latter will include a call to the function object #'foo
So the purpose of (defun car (list) (car list)) is to define a function object #'car after the compiler has already been taught how to compile car inline.