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.
go install github.com/luthersystems/elps@latestOr build from source:
git clone https://github.com/luthersystems/elps.git
cd elps && makeLaunch 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")`)- VS Code Extension — Syntax highlighting, LSP, debugger (Marketplace)
- Neovim — DAP configuration
- Emacs — DAP mode configuration
- Helix — DAP configuration
- JetBrains — LSP4IJ plugin configuration
| 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 |
- SICP Examples — Structure and Interpretation of Computer Programs
- User-Defined Types
- WASM Playground (source)
