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'