Conditionals and Derived Forms

A small core of if, sequencing, binding, lambda, application, assignment, and quotation receives hygienically normalized derived forms.

At a glance

LISPEX
(case 2 ((1) 'one) ((2) 'two) (else 'other))

Result

OUTPUT
two

Current guarantees

  • cond, case, and, or, when, unless, let*, named let, do, and quasiquote preserve pinned evaluation and tail positions.
  • Generated temporaries and hidden intrinsics cannot be captured or shadowed by user names.
  • case compares datums with eqv?; when and unless false paths produce zero values.

Boundaries

  • There is no define-syntax or user macro expansion.
  • Bare unquote and unquote-splicing outside quasiquote are static errors.