About Lisp-Stat

Lisp-Stat is an environment for statistical computing, conceptually similar to R, that is also suitable for front-line production deployments. It grew out of a desire to have an environment for rapidly prototyping analytical and AI solutions, and move to production environments with minimal friction. Typically there is a gap between the modeling environment, perhaps R or Python, and the delivery environment. Lisp-Stat closes that gap.

Why Lisp?

We had a few requirements when evaluating options. Specifically the system had to:

  • Work well in the kind of exploratory environment conducive to analytics and AI
  • Be robust enough to work in an enterprise-level production environment
  • Be available under a license without source code restrictions

Common Lisp was the only framework that met all these requirements. And, it is not the first time lisp was used in a statistical setting. XLISP-STAT, our spiritual predecessor, was a contemporary of R in the early days of development. Wikipedia says about it: “XLispStat was historically influential in the field of statistical visualization” and its author, Luke Tierney, was a member of the original R core team.

What does Lisp-Stat do?

Lisp-Stat provides support for vectorized mathematical operations, and a comprehensive set of statistical methods that are implemented using the latest numerical algorithms. In addition, Common Lisp provides a dynamic programming environment (REPL), an excellent object-oriented facility (CLOS) and meta-object protocol (MOP).

Lisp-Stat is functional today, and most of the XLISP-STAT libraries can be ported with the aid of a compatibility package (XLS). This gives Lisp-Stat a leg up on ecosystem development. Though not as complete as CRAN, there is enough here to get useful work done.


Lisp-Stat includes a column-oriented data-frame. Data may be loaded from the network, local disk or a relational database.


JupyterLab, along with common-lisp-jupyter are used to provide notebook style environments for reproducible research.


Plotting is done with Vega-Lite. There are a few ways to plot; see the documentation and tutorials for example. Plotly is not yet supported, and we would welcome someone picking up that ball and running with it.

XLisp-Stat Compatibility

The XLS package implements many of the XLisp-Stat functions using Lisp-Stat equivalents. This package is working internally, but not yet released. If you need this, please raise an issue on github.

What’s next for Lisp-Stat?

Lisp-Stat is an open source project and we welcome patches and contributions to improve Lisp-Stat. Both code and documentation help, and documenting the systems is an excellent way to learn the ins and outs of a statistical system whilst it is small enough to be managable. We hope to continue to make improvements to the system along with the Lisp-Stat community.

Visit the github repository to see what we’re currently working on. If there is something you would like to see in Lisp-Stat, please create an issue yourself - or assign yourself an issue if you would like to fix or add something. See our contribution guidelines for more information.