[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problems with KCL version of 7/7/88 PCL ...

    Date: Tue, 19 Jul 88 19:41:15 PDT
    From: Leonid V. Belyaev <leo@CS.UCLA.EDU>

    I am not sure if anyone out there is actually using the KCL version, but
    I haven't heard anyone complain about the following:

    2.  PCL will not compile under KCL:  when compiling FIXUP, the following se-
	ries of errors is generated:

	Compiling FIXUP...
	Error: LOAD-TIME-EVAL is invalid as a function.

Well, even once this bug is properly fixed, there are problems with
running the new version of PCL in the version of IBCL I am using.  It
seems that there is a bug involving dumping non-interned symbols and
having them come back as EQ.

Following are two test cases.  The first one doesn't work in the version
of IBCL I am using.  The second one does work in the version of IBCL I
am using.

Please test these in the version of KCL you are using.  If the second
case works for you, then I may be able to come up with a workaround for
PCL and we will be all set.

Of course if either case loses, you should report it as a bug to the
people who maintain the version of KCL you are using.

Put the following code in a file, compile that file and then load it.
if both cases work, loading the file should print 1 and 2 on separate 
lines.  If either case doesn't work, it will print something random
(probably #<OBJNULL>) instead.

;;; This version doesn't work.
(defmacro case-1 ()
  (let ((gensym (gensym)))
    `(setq foo (list '(a b ,gensym)
		     #'(lambda (x) ,gensym)))))


(eval-when (load)
  (set (car (last (car foo))) 1)     ;set the gensym to 1
  (print (funcall (cadr foo) ())))   ;should print 1

;;; This version does work.
(defmacro case-2 ()
  (let ((gensym (gensym)))
    `(setq bar (list ',gensym
		     #'(lambda (x) ,gensym)))))


(eval-when (load)
  (set (car bar) 2)                  ;set the gensym to 2
  (print (funcall (cadr bar) ())))   ;should print 2