Philosophy

See why Lispex takes explicit inputs, keeps execution conditions visible, and leaves external actions to the calling application.

You can write a decision rule in Lispex and see which inputs produce its answer. A shipping rule shows why the language separates calculation from the application that acts on the result.

Start with a rule and its answer

Paste this program into the Playground.

LISPEX
(define (shipping total)
  (if (>= total 50) 0 5))

(list (shipping 62) (shipping 30))

The result is:

(0 5)

An order total of 62 gives a shipping charge of 0. A total of 30 gives a charge of 5. The rule receives the total as an argument. The calling application reads the order and applies the charge.

Make the inputs and execution conditions explicit

Passing the total into shipping lets you inspect the calculation using just the rule and its input. The calling application handles files, network requests, clocks, transactions, and external actions.

To repeat a run, keep the source, input, runtime implementation, and resource profile the same. A resource profile specifies execution limits, such as the allowed work and memory. It lets the application set limits before running a rule. The resource manual explains how these limits affect execution.

Give each language form a defined meaning

Lispex follows the Scheme tradition. Each language form has defined inputs, evaluation rules, and diagnostics. For example, if evaluates its condition and then only the selected branch. In the shipping rule, >= includes the threshold itself, so a total of 50 gives a charge of 0.

The language specification, LISPEX-RUNTIME.md, defines these rules. Shorthand forms are converted to core forms before evaluation. The core language has 205 built-in procedure names in one registry. Use the evaluation manual to understand behavior and the procedure index to find an operation.

Keep the program, its record, and the action distinct

Each file serves a different task.

File or recordWhat you use it for
Source and its exact identifierReview the program bytes and specify which program an application accepts
Lispex ImageCarry the exact source bytes in an image
Core IRInspect an intermediate representation in which name references have been resolved
BytecodeRun compiled instructions in a virtual machine, the program that executes them
Execution record or comparison reportRetain the inputs, results, and recorded execution conditions
Vouch authentication, re-execution, and gate reportsCheck the publisher, rerun the request, and record whether the recipient's local checks accept it

Lispex Vouch connects a rule and its input to signed records. The recipient applies its trust policy and reruns the request before making a local acceptance decision. The calling application decides whether to perform the external action, such as charging for shipping.

Runtime products have their own identifiers, resource profiles, and recorded results. Choose one in the product catalog. The runtime reference explains how the implementations differ.