state

now(count 5) is a copy of now with its count changed to 5.

produce the next state after one more up: count one higher, and 'up' at the front of the log.

=> |% +$ state [count=@ud log=(list @t)] -- =/ now=state [3 ~['up' 'up' 'up']]
glossary

=> sets the subject to its head, then evaluates its tail against it.

=>([a=1 b=2] b) is 2.

|% makes a core: a battery of named arms, each written ++ name.

reach an arm back out with =< or arm:core.

=<  a
|%
++  a  5
--

is 5.

^: turns a type into a factory gate that molds any noun to that type.

(^:(@ud) 5) is 5.

$: makes a tuple mold, naming each face in a cell.

$:(x=@ y=@) is the mold [x=@ y=@].

$= wraps a mold with a face, naming the value it produces.

$=(x @) is the mold x=@.

list is the type of a null-terminated sequence.

(list @) is a list of atoms; the empty list is ~.

=/ pins a named value (a face) into the subject for the lines below it.

name=value optionally declares the type.

=/(a 3 (add a a)) is 6.

:* makes a tuple of many elements, nesting to the right.

:*(1 2 3) is [1 2 3].

irregular forms:

[a b c d] is :*(a b c d)

:~ makes a null-terminated list.

:~(1 2 3) is ~[1 2 3].

irregular forms:

~[a b c] is :~(a b c)

%= resolves a wing with some faces changed.

=/(a [x=1 y=2] a(x 9)) is [x=9 y=2].

irregular forms:

a(x 9) is %=(a x 9)

$(a b) restarts a loop with a changed to b