Mathematics
* ( factor0 factor1 -- product )
Multiplication
+ ( term0 term1 -- sum )
Addition
- ( minuend subtrahend -- difference )
Subtraction
/ ( dividend divisor -- quotient )
Division
^ ( base exponent -- power )
Raise to power
abs ( number0 -- number1 )
Absolute value
acos ( number -- angle )
Arccosine
asin ( number -- angle )
Arcsine
atan ( number -- angle )
Arctangent
atan2 ( y x -- angle )
Two-argument arctangent
ceil ( number0 -- number1 )
Next closest integer value
cos ( angle -- number )
Cosine
exp ( base -- exponent )
Exponent
floor ( number0 -- number1 )
Previous closest integer value
ln ( antilogarithm -- logarithm )
Natural logarithm
mod ( dividend divisor -- remainder )
Remainder after division
neg ( number0 -- number1 )
Negative of 'number0'
rcp ( number -- reciprocal )
Reciprocal
sin ( angle -- number )
Sine
sqrt ( radicand -- root )
Square root
tan ( angle -- number )
Tangent
Bitwise and conditional
< ( value0 value1 -- condition )
Return TRUE if 'value0' is less than 'value1'
= ( value0 value1 -- condition )
Return TRUE if 'value0' equals to 'value1'
> ( value0 value1 -- condition )
Return TRUE if 'value0' is greater than 'value1'
FALSE ( -- condition )
False constant
TRUE ( -- condition )
True constant
and ( value0 value1 -- value2 )
Conjunction
lshift ( number0 shift -- number1 )
Bitwise left shift of 'number0' by 'shift' bits
or ( value0 value1 -- value2 )
Disjunction
rshift ( number0 shift -- number1 )
Bitwise right shift of 'number0' by 'shift' bits
xor ( value0 value1 -- value2 )
Exclusive or
~ ( condition0 -- condition1 )
Logical complement or bitwise not
Object control
! ( value index list -- )
Assign 'value' to 'list' field by 'index'
& ( value0 value1 -- value2 )
Concatenate texts or lists
, ( list value -- list )
Append 'value' to the end of 'list' with empty name
@ ( index list -- value )
Get 'list' field by 'index'
array ( value size -- list )
Create list of 'size' copies of 'value'
cast ( number0 number1 -- number2 )
Convert 'number0' to the same primitive schema as 'number1'
closure ( ... -- ... )
Call topmost callable list. Use @closure to get a reference to it
copy ( value0 -- value1 )
Clone 'value0'
fieldCount ( list -- size )
Get number of fields in the 'list'
fieldName ( list index -- name )
Extract name of 'list' field by 'index', empty names are allowed
has ( list name -- condition )
Return TRUE if 'list' contains field named 'name'
insert ( value name list -- )
Append 'value' to the end of 'list' with 'name'
is ( value0 value1 -- condition )
Return TRUE if both values reference the same object, equal primitive values are the same objects
remove ( indexOrName list -- )
Remove field from 'list' by 'index' or by 'name' (last matching field is removed)
same ( value0 value1 -- condition )
Return TRUE if both values have the same schema
self ( ... -- ... )
Reference topmost bound list, if any. If list is callable, it will be called instead - use @self to get a reference to it
set ( srcList dstList -- )
Replace fields of 'dstList' with a copy of 'srcList' fields
untail ( list -- list value )
Extract 'value' from the end of the 'list'
Flow control
call ( ... body -- ... )
Execute text or callable
if ( ... condition body0 body1 -- ... )
If cond is TRUE, execute body0, otherwise execute body1
loop ( ... body -- ... )
Execute body in a loop while it returns TRUE
Utility
LF ( -- lineFeed )
Get text consisting of a line feed
print ( value -- )
Print text representation of 'value' to the text output
printStack ( -- )
Send information about stack state to the text output
textSplit ( text -- list )
Split text into list of texts containing Unicode Code Points
toText ( value -- text )
Get textual representation of 'value', 'call' can be used for the inverse operation
useFile ( ... name -- ... )
Execute contents of file named 'name'