Macros

Branching

`when`

Evaluates its body when a condition is true.

`unless`

Evaluates its body when a condition is false.

`and`

Performs a lazy Boolean AND.

`or`

Performs a lazy Boolean OR.

`cond`

Tests several conditions in turn.

`cond-eq?`

Successively tests a value for equality using `eq?`.

`cond-same?`

Successively tests a value for equality using `same?`.

`cond==`

Successively tests a value for equality using `==`.

Looping

`loop`

An endless loop.

`break`

Breaks out of a loop.

`continue`

Skips the rest of a loop's current iteration.

`while`

Loops as long as a condition is true.

`until`

Loops as long as a condition is false.

`for`

Loops over each value produced by an iterator.

`forn`

Loops over a numeric range.

`forni`

Loops over an inclusive numeric range.

`yield-from`

Yields each value produced by an iterator.

Places

`bind-place!`

Defines a new type of place.

`defplace`

A shorthand for `bind-place!`.

`inc!`

`dec!`

Performs in-place subtraction or decrement.

`mul!`

Performs in-place multiplication.

`div!`

Performs in-place division or reciprocation.

`div-euclid!`

Performs in-place Euclidean division or reciprocation.

`rem!`

Performs in-place remainder.

`rem-euclid!`

Performs in-place Euclidean remainder.

`abs!`

Replaces a number with its absolute value, in place.

`neg!`

Negates a number, in place.

`seek!`

Moves a number closer to a target number, in place.

`antiseek!`

Moves a number away from another number, in place.

`clamp!`

Clamps a number to lie within a numeric range, in place.

`swap!`

Exchange values stored in two different places.

Patterns

`match`

Attempt to match a value against several patterns.

`matches?`

Returns `#t` if a value matches a pattern.

`when-let`

Evaluates some forms when a value matches a pattern.

Miscellaneous

`do-0`

Evaluates multiple forms, returning the first form's result.

`include`

Replaces itself with the contents of a file.

`->`

Alternative syntax for nested function calls.

`->>`

Alternative syntax for nested function calls.

`backquote`

Quasi-quotation.

`unquote`

Evaluate a quasi-quoted form.