Lispex

Meet Lispex through one small decision rule, then choose a four-step learning path, the Playground, or the precise manuals.

This page describes v1.13. Verify whether it is the current manual at /version.json

Lispex is a small Lisp for decisions that should be easy to read again. A rule is ordinary text, the same input produces the same observable answer inside the documented limits, and the result can stay shaped like data instead of disappearing inside an application.

See the shape first

A Lispex program is built from values and parenthesized forms. In an evaluated form, the first name says what to do and the remaining expressions supply the inputs:

LISPEX
(+ 2 3)

Result

OUTPUT
5

Nesting reads from the inside out. Here >= answers a question, then if selects one of two data values:

LISPEX
(define total 62)

(if (>= total 50)
    '(decision free-shipping)
    '(decision standard-shipping))

Result

OUTPUT
(decision free-shipping)

The leading quote in '(decision free-shipping) means “keep this list as data.” Without it, Lispex would try to call a procedure named decision. That small distinction—forms can be executed or preserved as data—is one of the useful ideas you will learn gradually.

What Lispex is good at

Lispex fits rules such as eligibility checks, refund windows, pricing boundaries, routing choices, and repeatable transformations. Its reference runtime uses deterministic evaluation rules, exact arithmetic where possible, and stable diagnostics. Those properties make a small rule easier to rerun and compare.

The ordinary tree and multi-route products, including MCP authoring evaluation, do not meter all guest-controlled work or logical allocation. Use those surfaces with trusted rules. For a rule you do not trust, Native lispex embed provides a smaller restricted profile with deterministic work and logical-allocation limits and no host capabilities or fallback. It is an in-process bounded evaluator, not an operating-system process sandbox; a caller cancellation or killed process produces no decision or portable core.

Lispex is intentionally not a general operating-system scripting environment. It does not hide network calls, clocks, random values, or package imports inside a decision. Your application supplies the input and decides what to do with the returned value.

Choose your entrance

If you want to…Go here
learn the language in four small stepsLearning Path
run code without installing anythingPlayground
scan the everyday syntax on one pageSyntax at a Glance
install a local runtimeFirst Program
build and run a verified Native artifactRun Verified Bytecode
look up an exact form or procedureSyntax Reference or Procedure Index

Exact Lispex Images, verified Native bytecode, and Lispex Vouch are real product features, but none is a prerequisite for learning the language. Images carry exact source, bytecode provides an explicit local VM route, and Vouch authenticates a rule and checks a consumer-pinned request before a local decision gate. Learn the small language first; those paths will make more sense afterward.

A useful promise

The manual distinguishes what the product does from what it does not claim. Rust is the reference runtime. LIL and LIT are limited-scope verification backends, not silent fallbacks or proof that every implementation agrees everywhere. You can ignore that machinery during the course and return to Runtime and Backends when deployment or cross-checking matters.

Ready? Open the Learning Path, or go straight to the First Program if you prefer to learn by running code.