[alexandria-devel] eval-always, defun-always, etc...

Attila Lendvai attila.lendvai at gmail.com
Fri Oct 16 07:50:15 UTC 2009


dear list,

i know that this is a subject that has strong feelings attached to,
but with recent developments in XCVB the need for (eval-when
(:compile-toplevel :load-toplevel :execute) ...) has rose, and seeing
numerous eval-when noise in the code is potentially annoying.

related material:

a) relevant part of XCVB docs:
http://common-lisp.net/project/xcvb/doc/README.html#compile-time-side-effects

b) "XCVB patch for Alexandria" thread on alexandria-devel

c) blog entry from Nikodemus at
http://random-state.net/log/3387124996.html (broken currently, google
cache below)

http://209.85.129.132/search?q=cache:dmgWWKN8vFMJ:random-state.net/log/3387124996.html+nikodemus+eval-always&cd=1&hl=en&ct=clnk&client=firefox-a

=============

c) makes it clear that Nikodemus doesn't like eval-always, and i'm
sure many other lispers are on the same opinion. for the argument that
it does not introduce a new abstraction, i can point to COND, which is
the same as an ugly IF ladder, still most people prefer COND when
there are many legs of that if, because in that case COND is much less
noisy. no new abstraction, only a syntactic sugar, but it's much
easier for the eye.

a) has a detailed description why often a full (:compile-toplevel
:load-toplevel :execute) is necessary, and it'll be even more so as
XCVB gets used more and more.

so, i'd suggest to take some action:

 I) add an eval-always to alexandria-devel
 II) add a defun-always to alexandria-devel avoid the entire need for a wrapper
 III) ?

my vote goes for II), which is kinda in sync with c) too.

suggestions? opinions?

-- 
 attila




More information about the alexandria-devel mailing list