[alexandria-devel] Hi

Faré fahree at gmail.com
Thu Mar 15 07:21:10 UTC 2007


Hi,
I was thinking about putting some order in my own fare-utils, and
maybe merge with arnesi, cl-utilities, and so many other libraries.
Nikodemus told me to look for Alexandria. It would make a good start.
But there should really be another layered project to provide all the
basic algorithms to CL: fifos, various trees, iterators, comparators,
tries, hashes, sorting, pure and impure containers, etc. Although we
possibly want to layer that on top of a good macroexpansion and
higher-order module system a la MzScheme.

Notes, reading the darcs source:
* I think if-let* would be better if it did short-circuit logic and
stopped computing and binding at the first NIL
* in sequences.lisp, shouldn't suffle be shuffle?
* shouldn't emptyp be a gf?
* in symbols, what does ensure-symbol do that intern alone doesn't do???
* there should be a shortcut format-keyword for format-symbol :keyword
* tests should probably be in a separate directory, one per file,
mimicking the main source files.

Things I would really like from arnesi
* compose is done better in arnesi. a multiple-value version would be
even better (as a replacement or a distinct function).
* I *really* would like to see the flow-control parts of arnesi there.
Except that I prefer (block NIL ...) to (block while ...), and with*
should have a different name.
* ensure-list, ensure-cons, remove-keywords
* eval-always (called eval-now in fare-utils)


Things that might or not be good, some of which I have in fare-utils
or that are in use at ITA:
* the "optimizing" strcat (that normalizes to base-string if possible)
* nconcf, append1 append1f (i.e add one element at the end).
* many variants along the line of clisp's with-collect, arnesi's
with-collector, etc.
* my DBG macro, for print-based debugging.
* with-input, with-output, for wrapping a stream-using function like
format does with its internals (i.e NIL means returning the resulting
string).
* defconstant-equal, defconstant-equalp, defconstant-unequal,
defconstant-eqx -- to specify the constantness that matters.
* alist->hash-table and hash-table->alist
* with-accessors (with optional prefix) as a replacement for with-slots.
* accessors-equal to help compare objects slot-by-slot
* plist->alist
* association
* defun-inline
* define-values-modify-macro define-values-post-modify-macro post-incf post-decf
* multiple-value-quote (only useful if we also provide standard
abbreviated names -- which would make sense *a different package*)
* symbol-macro-expansion

That's all for today.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
A long time ago, someone in the Lisp industry told me it was poor form
quote people; it suggests that they lack value.  But I don't want to
get bound up into that argument, so let's just achieve closure by
agreeing that the point is that you can feel free to point people to
my earlier pointer, which works as a reference for certain reference
works that are particularly on point in their pointers about pointer
references.  Did you copy all that?
        -- Kent M Pitman

Take my advice, I for one have always believed
in share and share alike.  I'm constant on that.  If I were to
modify my argument, however slightly, those that depend on me
(and I get calls all the time, and I return most of them),
might accuse me of corruption.  I may have no class, but
at least my values haven't changed.
        -- Jrm



More information about the alexandria-devel mailing list