An embedded Lisp dialect for R: a true Lisp macro system, tail-call optimization, and other features new to R, but with seamless R interoperability.
Arl compiles to R and evaluates with R’s native eval(), so every R function and data structure is available directly — no compatibility layers needed. The macro system lets you transform code at compile time, and support for self-tail-call optimization allows deep recursive patterns without stack overflow. Both of these (and other features!) go beyond what R natively provides.
To get started, see the installation and core syntax guide or jump straight to the examples for complete working programs.
Features & Guides
- Seamless R interop — call any R function, use keywords for named arguments, work with R data structures directly.
-
Powerful macro system —
defmacrowith quasiquote, unquote, and splicing gives you compile-time code transformation. - Self-tail-call optimization — the compiler rewrites self-recursive tail calls as loops, so deep recursion won’t overflow the stack.
-
Modular standard library —
(import threading),(import control),(import sort)— load only the modules you need. - Benchmarks — performance characteristics, profiling, and optimization history.