CFFI bindings for libfann
Common Lisp
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
LICENSE Added license, exported examples in FANN-EXAMPLES package Feb 9, 2011 Updated / corrected README file Nov 22, 2010
cascade.lisp Added cascade training functions Nov 20, 2010
examples.lisp Removed metabang-bin dependency Sep 24, 2012
fann-generate-bindings.lisp Initial import Jul 22, 2010
fann.lisp Added license, exported examples in FANN-EXAMPLES package Feb 9, 2011
package.lisp Removed metabang-bin dependency Sep 24, 2012
train.lisp Added optional transformations to FORMAT-TRAIN-DAT Dec 14, 2010
util.lisp Added explicit exports to FANN package Nov 22, 2010 Completed working version Oct 20, 2010


Written by Mason Smith

  1. What is cl-fann?
  2. Installation
  3. Usage
  4. Limitations
  5. TODO

1. What is cl-fann?

cl-fann is a CFFI-wrapper for [libfann](, a fast artificial neural network. In addition, cl-fann provides a lispy interface to libfann, providing idiomatic macros and functions for easy integration into existing programs.

2. Installation

cl-fann is installable via ASDF. Simply make a symbolic link to fann.asd in your ASDF directory, and use `(asdf:oos 'asdf:load-op :fann)` to compile and load the program. Alternatively, if you use clbuild, you can add cl-fann to your wnpp-projects file. The repo is located at:

In addition to libfann 2.*, cl-fann requires the cffi, trivial-garbage, and alexandria libraries, all installable via ASDF-install or clbuild. With all of the dependencies, a clbuild line would look like:

cl-fann get_git get_trivial-garbage get_cffi get_alexandria

3. Usage

4. Limitations

The current working version of cl-fann is designed around version 2.0.0 of libfann. This is somewhat behind the current release version of libfann, which is 2.1.0b. I'm currently targeting 2.0.0 because this version has a binary release on all major platforms.


* Complete function coverage (mostly complete)
  • (Thorough) testing on various platforms and CL implementations

  • Versioning / tagging releases in the repository

  • Updating to 2.1.0b or 2.2.0, once the latter is released.