https://github.com/luthersystems/elps
An embedded lisp interpreter
https://github.com/luthersystems/elps
embedded-language go golang lisp
Last synced: about 1 month ago
JSON representation
An embedded lisp interpreter
- Host: GitHub
- URL: https://github.com/luthersystems/elps
- Owner: luthersystems
- License: bsd-3-clause
- Created: 2018-11-22T10:01:06.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2026-02-09T05:04:01.000Z (3 months ago)
- Last Synced: 2026-02-09T09:46:40.293Z (3 months ago)
- Topics: embedded-language, go, golang, lisp
- Language: Go
- Homepage: https://pkg.go.dev/github.com/luthersystems/elps
- Size: 3.24 MB
- Stars: 36
- Watchers: 5
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
README
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
```bash
go install github.com/luthersystems/elps@latest
```
Or build from source:
```bash
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:
```go
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](editors/vscode/)** — Syntax highlighting, LSP, debugger ([Marketplace](https://marketplace.visualstudio.com/items?itemName=LutherSystems.elps-lang))
- **[Neovim](editors/neovim/)** — DAP configuration
- **[Emacs](editors/emacs/)** — DAP mode configuration
- **[Helix](editors/helix/)** — DAP configuration
- **[JetBrains](editors/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 ` | Show function/package documentation |
| `elps mcp` | Start the MCP server for AI tooling |
## Documentation
- [Language Reference](docs/lang.md)
- [Embedding Guide](docs/embed.md)
- [Debugging Guide](docs/debugging-guide.md)
- [LSP Guide](docs/lsp-guide.md)
- [Go API Reference](https://pkg.go.dev/github.com/luthersystems/elps)
## Examples
- [SICP Examples](_examples/sicp) — Structure and Interpretation of Computer Programs
- [User-Defined Types](_examples/user-defined-types)
- [WASM Playground](https://luthersystems.github.io/elps/) ([source](_examples/wasm/))
## Links
- [Luther Systems](https://luthersystems.com)
- [Luther Enterprise](https://enterprise.luthersystems.com)
- [InsideOut Platform](https://insideout.luthersystems.com)
### Community & Support
- [Discord](https://insideout.luthersystems.com/discord)
- [General Inquiry Call](https://insideout.luthersystems.com/general-call)
- [Tech Call](https://insideout.luthersystems.com/tech-call)
- [contact@luthersystems.com](mailto:contact@luthersystems.com)