I was having trouble getting a new ILISP to work with a recent CMUCL,
and I've isolated it down somewhat.
I downloaded CVS snapshot 2003-11, and ran it in the shell with no
initialization file. I then executed the following sequence of
commands:
* (setf (default-directory) "/home/rif/Tmp/ILISP/")
"/home/rif/Tmp/ILISP/"
* (load "ilisp-pkg.lisp")
; Loading #p"/home/rif/Tmp/ILISP/ilisp-pkg.lisp".
T
* (load "cl-ilisp.lisp")
; Loading #p"/home/rif/Tmp/ILISP/cl-ilisp.lisp".
T
* (load "cmulisp.lisp")
; Loading #p"/home/rif/Tmp/ILISP/cmulisp.lisp".
T
* (load "find-src.lisp")
; Loading #p"/home/rif/Tmp/ILISP/find-src.lisp".
; Compiling LAMBDA (PCL::.PV-CELL. PCL::.NEXT-METHOD-CALL. CLASS):
; In: LAMBDA (PCL::.PV-CELL. PCL::.NEXT-METHOD-CALL. CLASS)
; (KERNEL::STRUCTURE-CLASS-NAME CLASS)
; ==>
; CLASS
; Warning: Result is a STRUCTURE-CLASS, not a (VALUES &OPTIONAL
KERNEL::STRUCTURE-CLASS &REST T).
;
; Note: Deleting unreachable code.
;
; Compiling Top-Level Form:
; Compilation unit finished.
; 1 warning
; 1 note
; Compiling LAMBDA (PCL::.PV-CELL. PCL::.NEXT-METHOD-CALL. OBJECT):
; Compiling Top-Level Form:
; Compiling LAMBDA (PCL::.PV-CELL. PCL::.NEXT-METHOD-CALL. OBJECT):
; Compiling Top-Level Form:
; Compiling LAMBDA (PCL::.PV-CELL. PCL::.NEXT-METHOD-CALL. OBJECT):
; Compiling Top-Level Form:
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
#<STRUCTURE-CLASS EVAL:INTERPRETED-FUNCTION
{4845A82D}> is not of type KERNEL::STRUCTURE-CLASS
[Condition of type TYPE-ERROR]
Restarts:
0: [CONTINUE] Return NIL from load of "find-src.lisp".
1: [ABORT ] Return to Top-Level.
Debug (type H for help)
((FAST-METHOD CLASS-NAME (STRUCTURE-CLASS)) #<unused-arg> #<unused-arg>
#<STRUCTURE-CLASS EVAL:INTERPRETED-FUNCTION {4845A82D}>)
Source: (KERNEL::STRUCTURE-CLASS-NAME CLASS)
If I compile the final file (find-src.lisp), I can load the compiled
file (find-src.x86f). Is this a known problem? If so, what causes
it? The unfortunate side effect is that, AFAICT, there is no way to
get a new ILISP working without compiling at least find-src.x86f from
a lisp started in a shell. This is likely to be offputting to
newbies.
If it helps at all, the form that seems to be causing the
choking during the load of the .lisp file is:
(defmethod add-method-pathnames ((method standard-method))
(multiple-value-bind (source method-spec) (object-source-file method)
(add-definition-source-files method-spec :function source)))
Cheers,
rif
ps. Does the CL spec allow for code that only works properly when
compiled?