[Openmcl-devel] ccl and asdf-install (wiki hints)

Robert Goldman rpgoldman at sift.info
Wed Jan 6 14:56:45 PST 2010

On 1/6/10 Jan 6 -4:31 PM, Philippe Sismondi wrote:
> I am now struggling with learning asdf and asdf-install. (I confess that
> I am still pretty much stuck at the beginner level with CL, so be kind....)
> Anyway, on the
> page http://trac.clozure.com/ccl/wiki/HintsForAsdfAndOpenmcl it suggests
> this code for ccl-init.lisp (macports version):
> (pushnew "ccl:tools;asdf-install;site-systems;"
>         asdf:*central-registry* :test #'string-equal)
> Shouldn't :test be #'equal instead of #'string-equal?
> When I use #'string-equal I get errors test against
> asdf:*central-registry* because it's a pathname, if I understand
> correctly. Little bumps in the road like this throw me off more than
> they should, perhaps.

I would suggest you just PUSH this onto the asdf:*central-registry*
instead of fussing with PUSHNEW.

PUSHNEW is going to a lot of effort to try to detect whether an element
is already there, but

(a) who cares if there is more than one copy?  Yes, if you have a
zillion copies, performance will bog down and you'll be in trouble.  But
I bet this not your problem.

(b) asdf:*central-registry* is an /ordered/ data structure, and you want
to control the order.  PUSHNEW is appropriate for a set (unordered) data
structure, where you just care about whether something is there or not.
 It's not appropriate for an ordered data structure, because it takes
control of the ordering away from you.  If I push a, b, and c onto
asdf:*central-registry*, I want them to appear c before b before a.  I
don't want to get c after b and a because somebody else happened to put
c there earlier.


More information about the Openmcl-devel mailing list