Branching
whenEvaluates its body when a condition is true.
unlessEvaluates its body when a condition is false.
andPerforms a lazy Boolean AND.
orPerforms a lazy Boolean OR.
condTests 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
loopAn endless loop.
breakBreaks out of a loop.
continueSkips the rest of a loop's current iteration.
whileLoops as long as a condition is true.
untilLoops as long as a condition is false.
forLoops over each value produced by an iterator.
fornLoops over a numeric range.
forniLoops over an inclusive numeric range.
yield-fromYields each value produced by an iterator.
Places
bind-place!Defines a new type of place.
defplaceA shorthand for bind-place!.
inc!Performs in-place addition or increment.
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
matchAttempt to match a value against several patterns.
matches?Returns #t if a value matches a pattern.
when-letEvaluates some forms when a value matches a pattern.