[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Problems with KCL version of 7/7/88 PCL ...
- To: Leonid V. Belyaev <leo@CS.UCLA.EDU>
- Subject: Re: Problems with KCL version of 7/7/88 PCL ...
- From: Gregor.pa@Xerox.COM
- Date: Wed, 20 Jul 88 14:07 PDT
- Cc: CommonLoops.pa@Xerox.COM
- Fcc: BD:>Gregor>mail>outgoing-mail-3.text.newest
- In-reply-to: <8807200241.AA11910@maui.cs.ucla.edu>
- Line-fold: no
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)))))
(case-1)
(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)))))
(case-2)
(eval-when (load)
(set (car bar) 2) ;set the gensym to 2
(print (funcall (cadr bar) ()))) ;should print 2
-------