numbers such as 1, -5.23, 123456789012345678901234567890
strings such as "hello"; the backslash character \ can be used for escaping double quotes and backslashes, nothing else
characters such as 'a - note the absence of a second single quote; there is no escape character
Operators, named with 1 or 2 letters or special characters
Variables, which can be any single uppercase letter
Blocks, delimited by { and }
Operators
!boolean "not"
#power, find index
$copy from stack, sort
%mod, split, map
&bitwise/setwise "and", if-then
(decrement, uncons from left
)increment, uncons from right
*multiply, join, repeat, fold (reduce)
+add, concat
,range, length, filter
-subtract, remove
.infix "vector" operator, must be followed by a binary operator or a block; applies that operator or block on two arrays, item by item, creating an array with the results
/divide, split, each
:infix operator, can be followed by: 1) variable name 2) set variable 3) unary operator - map 4) binary operator - fold (reduce)
;pop and discard
<compare, slice
=compare, array get, find value
>compare, slice
?if (ternary)
@rotate top 3 elements on the stack
[start array
\\swap top 2 elements on the stack
]end array
^bitwise xor, symmetric difference
_duplicate top element on the stack
`string representation
awrap in array
bbase conversion
cconvert to char
dconvert to double
efollowed by numeric literal - infix operator, calculates *10x (as in the scientific notation)
finfix operator, can be followed by: 1) variable name - for loop 2) binary operator 3) block - map with extra parameter
gdo-while loop that pops the condition, signum, get from url
hdo-while loop that leaves the condition on the stack
iconvert to integer
jmemoize
lread line
mfollowed by numeric literal - subtract (same as - but avoids the need for a space after it)