[Bese-devel] Two problems with CMUCL HEAD 2005-08-26 (19b) in UCW and ARNESI (dev)

Fabricio Chalub chalub at gmail.com
Sat Aug 27 02:10:11 UTC 2005


Hello!

I'm trying UCW (latest dev repositories, etc.) on CMUCL HEAD
(2005-08-26) (19b) and am having two different problems; the first is
with the actual compilation of UCW per se and an attempt in fixing it is
provided, while the second is in one of the examples.

The problem is an error raised by ARNESI when CMUCL loads/compiles
control-flow.lisp in rerl/standard-component, as follows (note also the
minor typo `lexcial'):

   Error in function (METHOD IT.BESE.ARNESI::LEXICAL-FUNCTIONS NIL
   (C::LEXENV)):

   Sorry, don't know how to handle the lexcial function spec 
   (IT.BESE.UCW:ANSWER . #<C::FUNCTIONAL #x5853F82D NAME= NIL>).
   [Condition of type SIMPLE-ERROR]

Which is raised by LEXICAL-FUNCTIONS in LEXENV.LISP.  It appears that
the function spec (ANSWER . #<C::FUNCTIONAL) fell through the cases
handled by the #cmu version of that function.

An ugly attempt at covering this case follows, but it surely does not
solve the problem satisfactorily as I have no experience in CMUCL's
internals.  My solution is to add another ELSE IF before the ERROR call,
considering the 'C::FUNCTIONAL case as follows:

--- lexenv.lisp.~1~     2005-08-25 23:38:43.000000000 -0300
+++ lexenv.lisp 2005-08-26 22:32:07.531838568 -0300
@@ -126,10 +126,13 @@
                   (eql 'system:macro (second func-spec)))
        ;; except that we don't return macros for now
        do (progn)
-     ;; if we get here we're confused :(
-     else
-       do (error "Sorry, don't know how to handle the lexcial function spec ~S."
-                 func-spec)))
+       else if (typep (cdr func-spec) 'C::FUNCTIONAL)
+             collect (car func-spec)
+            ;; handle the case  (NAME . #<C::FUNCTIONAL>)
+            ;; if we get here we're confused :(
+            else
+            do (error "Sorry, don't know how to handle the lexcial function spec ~S."
+                      func-spec)))

With the above patch the LEXICAL-FUNCTION apparently works, except now
that the PRESENTATIONS example of UCW fails with the following error.

  Generic function CREATE-PERSON: Invalid generic function parameter name
  ((LAST-NAME 
  LAST-NAME))

Which completely baffles me as I cannot find any problems in
CREATE-PERSON on a superficial look. I don't discard this being a
fallout from my "patch". 

Anybody else have similar problems with CMUCL?

(Ignoring the PRESENTATIONS example, the rest works perfectly well,
thanks for the magnificent work.)

Best regards,
Fabricio




More information about the bese-devel mailing list