Almost Clojure
in Go.

let-go is a Clojure-like lisp, running on a small Go-built VM instead of the JVM, so it boots fast and fits in a pocket. Your programs compile to standalone binaries.

booting wasm…
try

Install

homebrew brew tap nooga/let-go https://github.com/nooga/let-go brew install let-go
go go install github.com/nooga/let-go@latest

Usage

One lg binary covers the lifecycle: open a REPL, bundle a script into a standalone executable, or build a self-contained WASM page.

Embedding

let-go embeds in any Go program as a library. Define Go values and functions on the runtime, evaluate Clojure source against them. Channels, structs, and slices cross the boundary in both directions.

// go get github.com/nooga/let-go
import "github.com/nooga/let-go/pkg/api"

lg, _ := api.NewLetGo("user")

lg.Def("x", 42)
lg.Def("mul", func(a, b int) int { return a * b })

v, _ := lg.Run("(mul x 2)") // => 84

See also