A functional set-theoretic collections library


FSet is a functional set-theoretic collections library. Functional means that all update operations return a new collection rather than modifying an existing one in place. Set-theoretic means that collections may be nested arbitrarily with no additional programmer effort; for instance, sets may contain sets, maps may be keyed by sets, etc.

The FSet home page explains why I chose functional semantics for FSet.

To get started using FSet, check out the FSet Tutorial. Once you've gone through that, I recommend the FSet/CL page, which explains how FSet is integrated into Common Lisp.

There might be some useful information on the FSet CLiki page.


FSet is distributed under the LLGPL. (If you want to use FSet and this license is a problem for you, please contact me.)


This is release 1.2 of FSet/CL. It is very well tested by this point; I think it is approaching commercial quality. Please do let me know if you have any trouble with it at all (see below for how to submit bug reports). See the 1.2 release notes. Note that if you are upgrading from 1.1, you must also upgrade Misc-Extensions.

Also, if you are using FSet, please add yourself to the fset-announce mailing list. This lets me know how many people are using it and gives me a way to inform you of updates. Volume on this list is extremely low.

FSet/CL has been tested with these Common Lisp implementations:


The areas less well tested at this point are:

But the four fundamental FSet types, sets, maps, seqs, and bags, I believe to be quite solid at this point. Of course, there is NO WARRANTY.



Overview and design rationale

Documentation generated from the source code by Tinaa.

Release notes for release 1.2.

Mailing Lists


The usual way of downloading this package is by ASDF-Install. My GPG key fingerprint is: D15D B125 659E 5629 C017 05FA 5842 A76C 4C1D 39D8


You can browse our Subversion repository or download the current development tree via anonymous svn, as described here. (You will also need Misc-Extensions.)

Bug reports

Please submit bug reports to the fset-devel mailing list (you will need to subscribe first). To see pending bugs, use Trac.

Valid XHTML 1.0 Strict