Welcome to the Moonli Programming Language!

Learn More Download

Moonli is an easy to use interactive programming language powered by battle-tested tools. Its syntax is reminiscent of familiar languages like Python or Julia.

Under the hood, it relies on a flexible, multiparadigm language Common Lisp, and particularly its optimizing compiler SBCL.

30+ years of rich heritage

Common Lisp was ANSI standardized over the course of early-1980s to mid-1990s. SBCL (earlier CMUCL) has been available since early-2000s and continues to have monthly releases to this day.

Small but extensive ecosystem

The Common Lisp community curates its libraries from time to time at awesome-cl.

Multiple library managers

From quicklisp that ensures all packages in a distribution work together, to ultralisp that builds every five minutes, and OCI-based ocicl, there are multiple options to suit your needs.

Optional Typing

Common Lisp is dynamically typed by default. This again aids prototyping. However, once the prototype is ready, the program can be documented or optimized using type information. SBCL (see also Coalton) is immensely helpful.

Interactive Programming

Designed for interactive programming from the ground up. This makes it easy to redefine not just variables and functions but also classes, types, packages (= modules/namespaces) and syntax all on the fly.

In particular, each can be redefined in a piecemeal fashion. This makes it best suited for explorative programming without breaking your flow.

Learning Resources and Features

From the hacker oriented books Cookbook and Practical Common Lisp to beginner friendly as well as advanced and beyond, there's something for everybody.

Transpile-based

Moonli transpiles to Common Lisp. Your colleague familiar with Python or Julia can read Moonli code, while lispers in the wild can consume the corresponding Common Lisp code.

Familiar Syntax

The syntax for Moonli is based around Python or Julia. This means it should be accessible to a wider audience who are familiar with these languages but unfamiliar with Lisp.

Extensible

Moonli syntax is defined using Parsing Expression Grammar. The resulting grammar has two entry points to extend Moonli syntax. This makes it easy to extend Moonli to your favorite Common Lisp construct!

Common Lisp and thus, Moonli, is mutable, but can be used in a functional manner. It is amongst the pioneers of multiple dispatch. It supports multithreading. SBCL supports SIMD instructions on x86-64 processors. C libraries can be used through the Common Foreign Function Interface. This includes access to CUDA. These days, experimental support for calling functions in Python libraries is also available.

Contributions welcome!

We do a Pull Request contributions workflow on GitHub. New users are always welcome!

Star and Watch us on Github!

For announcement of latest features etc

Create an Issue!

To ask for help or report a bug, create an issue.