[armedbear-devel] IRONCLAD cannot be compiled on ABCL now

Alan Ruttenberg alanruttenberg at gmail.com
Fri Jul 8 13:28:34 UTC 2011


On Fri, Jul 8, 2011 at 4:52 AM, Mark Evenson <evenson at panix.com> wrote:
> @Alan:  I value your intuition that the sharpsign dot form here isn't
> portable.  But is there a specific part of CLHS that you are thinking about
> here that I could pore over?

I was trying to find. The thing is that #. isn't compile-time - it's
even earlier - read time, and I suspect the issue is the environment
it is compiled in might not be well-defined.

The documented way to accomplish what is desired, I believe, is to use
load-time-value inside a compiled function.

(defun make-foo () (load-time-value <value form> t)) ; read-only-p <-
t, cause it is a constant
(defparameter +foo+ (make-foo))

http://www.lispworks.com/documentation/HyperSpec/Body/s_ld_tim.htm

"load-time-value form &optional read-only-p => object

Arguments and Values:
form---a form; evaluated as described below.
read-only-p---a boolean; not evaluated.
object---the primary value resulting from evaluating form."

"If a load-time-value expression appears within a function compiled
with compile, the form is evaluated at compile time in a null lexical
environment. The result of this compile-time evaluation is treated as
a literal object in the compiled code."

-Alan




More information about the armedbear-devel mailing list