This is a library of various tools, written in Common Lisp.

You can download this package from the following HTTP mirrors:

To use this package, you will need an ANSI Common Lisp as well as my cross-implementation portability package PORT.


CLLIB is now a part of CLOCC (in src/cllib), and, as such, is accessible via anonymous CVS and FTP, as explained on the CLOCC homepage. CLLIB can be compiled using mk:defsystem, which is a part of CLOCC, and it relies on src/port, (download) which was actually a part of CLLIB before.


This Common Lisp sources include the following files (in the alphabetical order):

animals.lisp "guess the animal" game; simple neural net
autoload.lisp autoload function and snarfing autoloads from other files
base.lisp basic definitions: package and path
base64.lisp base64 encoding and decoding
card.lisp Rolodex: BBDB/vCard handling
check.lisp check values and types of the elements of a list
clhs.lisp Common Lisp HyperSpec access
closio.lisp read/write CLOS objects
csv.lisp read/write comma-separated values
cvs.lisp CVS diff and log parsing
data.lisp data analysis and visualization
date.lisp date/time
datedl.lisp dated lists
doall.lisp answer questions automatically; requires metering.lisp
elisp.lisp Load Emacs-Lisp code into Common Lisp
fileio.lisp read/write lists etc
fin.lisp Financial functions: mortgage calculations, Luhn algorithm, Black-Scholes, Solow
geo.lisp geography, weather, etc
getopt.lisp command line option processing - for Lisp scripting
gnuplot.lisp Gnuplot interface
gq.lisp GetQuote - stock quotes over the Internet.
grepfin.lisp query the financial data from MFFAIS and FINVIZ
h2lisp.lisp parsing C headers
html.lisp HTML parsing via text-stream
htmlgen.lisp HTML generation
inspect.lisp portable inspector (2 frontends: TTY and an HTML broser)
iter.lisp iterate across multidimensional arrays
laser.lisp print a hardcopy
lift.lisp lift (ROC) curve analysis
list.lisp list utilities
log.lisp time elapsed, messages etc
math.lisp arithmetics, permutations, statistics, geometry and more
matrix.lisp matrix operations (solving linear equations, inversion)
miscprint.lisp print hash tables, packages, characters etc
munkres.lisp Munkres' Assignment Algorithm (AKA "Hungarian Algorithm")
bayes.lisp Naive Bayesian classifier
ocaml.lisp Read ocaml sexp files
octave.lisp interact with octave - the GNU MatLab
prompt.lisp fontify the prompt in an xterm
rng.lisp Random Number Generator (by Raymond Toy) for various non-trivial distributions
rpm.lisp RPM handling (download etc) - a better rpmwatcher
server.lisp REPL over a socket
simple.lisp with-collect and some simple stuff
sorted.lisp operate on sorted lists (map, reduce etc)
stat.lisp multidimensional statistics - requires
string.lisp string splitting
symb.lisp symbol concatenation
tests.lisp regression testing (internal)
tilsla.lisp comma and friends for format ~//
url.lisp HTTP/FTP/URL etc
withtype.lisp various utilities not fitting anywhere else
xml.lisp XML parsing


This package is distributed under the GNU GPL.

If you must use the code in a proprietary environment (i.e., you would like to distribute without sources something based on this library), please contact me and I am sure we will be able to find some agreeable terms.


To use the library, type "make system", which should compile all the files. Alternatively, you can issue the (mk:compile-system "cllib") command yourself. This will create and compile the "auto.lisp" file with all the autoloads. Then you can dump your images.

See also the general CLOCC INSTALL instructions.

This library depends on port and metering. These packages will be compiled by "make system".

Please note that this package exports symbols with names which might be already present as an extension in your Common Lisp implementation. I recommend issuing the following command before using this package:

 '(cllib::read-from-file cllib::browse-url cllib::*browsers* cllib::*browser*
   cllib::with-collect cllib::! cllib::erf
   cllib::with-html-output cllib::with-http-output
   cllib::*inspect-frontend* cllib::*inspect-browser*
   cllib::*inspect-print-lines* cllib::*inspect-print-level*
   cllib::*inspect-print-length* cllib::*inspect-length*))


Comments and bug reports are welcome.

Sam Steingold
Valid XHTML 1.0!