|
From: Stas B. <sta...@gm...> - 2012-10-23 08:12:49
|
Masayuki Takagi <kam...@gm...> writes: > Hi, > >>From function-debug-info function in introspect.lisp, %code-debug-info > function is called. > > Looking the definition of it in stubs.lisp: > > (macrolet ((def (name &optional (args '(x))) > `(defun ,name ,args (,name ,@args)))) > ... > (def %code-debug-info) > ...) > > In this definition, (def %code-debug-info) will be expanded as: > > (defun %code-debug-info (x) > (%code-debug-info x)) > > And this is infinitely recursive. It means that it would be transformed by the compiler. So, whenever (%code-debug-info x) is encountered, it's transformed in some way. Why there needs to be such a recursive definition? (%code-debug-info x) will be transformed inside that function and then you will be able to do (funcall #'%code-debug-info x) -- With best regards, Stas. |