README.md
March 24, 2026 · View on GitHub
ELPS — An embedded Lisp interpreter for Go programs
•
Luther Systems •
InsideOut •
ELPS (Ellipse) is a Lisp-1 dialect designed to be embedded within Go applications. It provides a standalone CLI for running, linting, formatting, debugging, and exploring ELPS Lisp code.
Install
go install github.com/luthersystems/elps@latest
Or build from source:
git clone https://github.com/luthersystems/elps.git
cd elps && make
Quick Start
Launch an interactive REPL:
$ elps repl
> (+ 3 1)
4
> (defun greet (name) (format-string "Hello, %s!" name))
> (greet "World")
"Hello, World!"
> ^D
Run a program:
$ elps run prog.lisp
Embed in a Go program:
env := lisp.NewEnv(nil)
env.Runtime.Reader = parser.NewReader()
env.Runtime.Library = &lisp.RelativeFileSystemLibrary{}
lisp.InitializeUserEnv(env)
lisplib.LoadLibrary(env)
env.LoadString(`(debug-print "hello world")`)
Editor Support
- VS Code Extension — Syntax highlighting, LSP, debugger (Marketplace)
- Neovim — DAP configuration
- Emacs — DAP mode configuration
- Helix — DAP configuration
- JetBrains — LSP4IJ plugin configuration
CLI
| Command | Description |
|---|---|
elps run file.lisp | Run a Lisp source file |
elps repl | Start an interactive REPL |
elps lsp | Start the Language Server Protocol server |
elps debug file.lisp | Start the debug adapter (DAP) |
elps lint file.lisp | Run static analysis |
elps fmt file.lisp | Format source code |
elps doc <query> | Show function/package documentation |
elps mcp | Start the MCP server for AI tooling |
Documentation
Examples
- SICP Examples — Structure and Interpretation of Computer Programs
- User-Defined Types
- WASM Playground (source)