[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