Lisp dialect running on top of Lua, by SquidDev and demhydraz.
- A minimal¹ Lisp implementation, with full support for compile time code execution and macros.
- Support for Lua 5.1, 5.2 and 5.3. Should also work with LuaJIT.
- Lisp-1 scoping rules (functions and data share the same namespace).
- Influenced by a whole range of Lisp implementations, including Common Lisp and Clojure.
- Produces standalone, optimised Lua files: no dependencies on a standard library.
> (case '("x" (foo 2 3)) . [(string? @ ?x) (.. "Got a string " x)] . [("x" (foo . ?x)) (.. "Got some remaining values " (pretty x))]) out = "Got some remaining values (2 3)"
> (loop [(o '()) . (l '(1 2 3))] . [(empty? l) o] . (recur (cons (car l) o) (cdr l))) out = (3 2 1)
> (import test ()) out = nil > (affirm (eq? '("foo" "bar" "") . (string/split "foo-bar" "-"))) [ERROR] <stdin>:1 (compile#111{split,temp}:46): Assertion failed (eq? (quote ("foo" "bar" "")) (string/split "foo-bar" "-")) | | | ("foo" "bar") ("foo" "bar" "")
> { :foo 1 . :bar 2 } out = {"bar" 2 "foo" 1}
> (] [ERROR] Expected ')', got ']' => <stdin>:[1:2 .. 1:2] ("]") 1 │ (] │ ^... block opened with '(' 1 │ (] │ ^ ']' used here >
Getting started: getting started guide. Docs: documentation for all functions and macros.