# README for CLLIB

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

You can download this package from the following HTTP mirrors:

- sourceforge
- podval.org
- goems.com

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

## CLOCC

`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.

## Files

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

file | description
--- | ---
`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
`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
`cvs.lisp` | CVS diff and log parsing
`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.
`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
`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
`octave.lisp` | interact with octave
`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

## License

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.

## Compiling

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:

    #+clisp
    (shadowing-import
     '(cllib::read-from-file cllib::browse-url cllib::*browsers* cllib::*browser*
       cllib::package-short-name 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

Comments and bug reports are welcome.

Sam Steingold |