[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The recent discussion on CL environments sent me back to my CLtL
in hopes that I could better understand what was being discussed.
Thie review of CLtL revealed several topics that I clearly do not
understand. I apologize in advance if these have been discussed before
but I can find no clear answer in CLtL.
1) DEFUN - Is this a special form or a macro? From CLtL, p. 67:
The _defun_ special form is the usual means for defining named
The very next line declares that defun is a [Macro]. This view is
supported by the absence of defun from the list of special forms on
page 57. (BTW, the index entry for defun muddies the water by
listing page 57 (not 67) as the first entry, the entry which for
(all?) other defined words is the page of the definition.)
If defun is a macro, to what does it expand? My best guess would be
a (setf (symbol-function 'name) ...) based on the discussion of
symbol-function on page 90. My question then becomes: Into what
does the setf form expand? Is it intended that the update function
for symbol-value have an implmentation-dependent name?
The same sort of question applies to the update function for
2) LAMBDA-LISTS - Is the order of lambda-list keywords fixed? (p. 60)
Will the order alway be &optional/&rest/&key/&aux (meaning that
if the keyword is used, it will be in the order given)?
It seems likely that this is so but I'm not sure.