Fred Gilham wrote on Fri, Jul 12, 2002 at 12:27:59PM -0700:
>
> What does the `referencing an undumpable constant' error mean?
>
> I'm trying to recompile the Ergo Lisp system and I'm stuck on this
> problem. The error comes when compiling the following file:
>
> ;;; -*- Mode: Lisp; Package: SB-RUNTIME -*-
> (in-package "SB-RUNTIME") (use-package :ergolisp)
>
> (use-package '("OPER" "OCC" "TERM" "SORT" "LANG"))
>
> (defparameter *sbrt-sort-table*
> (make-sort-table
> '((#t(:sort id) . #t(:union))
> (#t(:sort cid) . #t(:union))
> (#t(:sort number) . #t(:union))
> (#t(:sort string) . #t(:union))
> (#t(:sort literal) . #t(:union))
> (#t(:sort keyword) . #t(:union)))))
Can you post the source for make-sort-table?
> I don't know if the problem is due to make-sort-table creating a hash
> table (which it does) or to it using the #t read macros. Or if
> there's some other problem.
I usually get these in third-party code when a function takes a (then
higher-order) function as an argument and a default funtion is
provided, but somebody forgot the #'
(defun bla (foo bar &optional (comparefunction foo)
instead of
(defun bla (foo bar &optional (comparefunction #'foo)
The CMUCL compiler would in the former case try to put the literal
function, not a refernece to it into the file. Other compilers
silently convert to the second form (e.g. Allegro).
Martin