You can list all the installed words in froth with the
WORDS word, or use froth.dictionary() from R.
The following is all the words referenced in the previous chapters.
<NUMBER> ( -- n ) : pushes a number onto the
stackemit ( n -- ) : prints the top number of the stack,
interpreting as ASCIIcr ( -- ): prints a new line." xxx" ( -- ): prints xxx on the
terminal. Note that " terminates the string.: xxx yyy ; ( -- ) : defines a word xxx
comprised of words yyyFORGET xxx ( -- ): removes the current word
xxx. If xxx had a previous definition it
reverts to that previous value, and otherwise the word is removed.+ (a b -- n): adds a+b* (a b -- n): multiplies a*b. (n -- ): pops the top element of stack and prints
itclear ( x1 x2 ... -- ): removes all elements of the
stackreset ( -- ): reset froth to defaults
(wipe all user definitions, reinitialize all built-in definitions, reset
all stacks)/ ( a b -- n ): division
(5 2 / => 2.5)%/% ( a b -- n): integer division
(5 2 %/% => 2)mod ( a b -- rem ): remainder when dividing
a / b/mod ( a b -- rem quot ): integer divides
a %/% b, pushes the remainder and then the quotient^ ( a b -- n ): raises a^bnegate ( a -- n ): negates aabs ( a -- n ): takes the absolute value of
amin ( a b -- min ): pushes min(a,b)max ( a b -- max ): pushes max(a,b)sqrt ( a -- root ): pushes sqrt(a)SWAP ( a b -- b a ): swap top two stack elementsDUP ( n -- n n ): duplicate the top stack elementOVER ( a b -- a b a ): duplicate the second element to
the top of the stackROT ( a b c -- b c a ): rotate the third item to the
topDROP ( n -- ): discard the top element of the
stack.S ( -- ): print out the contents of the stack2SWAP ( a b c d -- c d a b ): swap the top two
pairs2DUP ( a b -- a b a b ): duplicate the top pair2OVER ( p1 p2 -- p1 p2 p1 ): duplicate the second pair
(p1) to the top2DROP ( a b -- ): discard the top pair>R ( n -- ): moves the value on the parameter stack
to the return stackR> ( -- n ): moves the value on the return stack to
the parameter stackR@ ( -- n ): copies the value on the return stack to
the parameter stack1+ ( n1 -- n2 ): adds 11- ( n1 -- n2 ): subtracts 12+ ( n1 -- n2 ): adds 22- ( n1 -- n2 ): subtracts 22* ( n1 -- n2 ): multiplies by 22/ ( n1 -- n2 ): divides by 2*/ ( a b c -- n ): pushes (a*b) / c*/mod ( a b c -- rem quot ): pushes the remainder and
quotient of (a*b) %/% cif: if top of stack is TRUE, executes.
Else jumps to the next else or then
block.else: executes commands until then only if
the preceding if did not execute.then: terminates an if or
if...else block.\: signals to the interpreter that you’re making a
newline without running commands=: are the top two elements equal?<: is the top element greater than the first?>: is the top element less than the first?<>: are the top two elements not equal?0=: is the top element zero?0<: is the top element greater than zero?0>: is the top element less than zero?<=: is top element greater than or equal to the
second?>=: is top element less than or equal to the
second?AND: push TRUE if the top two elements are
both TRUEOR: push TRUE if at least one of the top
two elements are TRUEXOR: push TRUE if exactly one of the top
two elements is TRUENOT: push TRUE if the top element is
FALSE and vice-versa?DUP: duplicate top value if it is nonzeroABORT": abort if top value true, print error message
(terminated by ")DO ( end start -- ): starts a definite loop from
start to endLOOP ( -- ): increments the loop counter by 1+LOOP ( n -- ): increments the loop counter by nI ( -- n ): copies the current loop counter to the
stackJ ( -- n ): copies the enclosing loop’s counter to the
stackK ( -- n ): copies the enclosing loop’s enclosing
loop’s counter to the stackBEGIN ( -- ): starts an indefinite loopAGAIN ( -- ): returns to BEGINWHILE ( flag -- ): if flag, continue; else
jump to after REPEATREPEAT ( -- ): returns to BEGIN following
WHILELEAVE ( -- ): leave the current loop immediatelyVARIABLE xxx: creates a variable named
xxx! ( n addr -- ): stores the value n at
address addr@ ( addr -- n ): copies the value at addr
to the stack? ( addr -- ): prints the value of
addr+! ( n addr -- ): adds the value n to the
value at addrCONSTANT xxx (n -- ): creates a constant called
xxx that stores n; xxx returns
n when calledALLOT ( addr ncells -- ): allocates ncells
cells at addrCREATE xxx y1 , y2 , ... yn ,: creates an array
xxx with values y1, y2, ... ynCELLS ( n -- ): creates a memory address offset for
arraysFILL ( addr ncells val -- ): fills ncells
cells of memory beginning at addr with
valERASE ( addr ncells -- ): fills ncells
cells of memory beginning at addr with 0REALLOT ( addr ncells -- ): reallots array at
addr to have size ncells.EXTEND ( addr ncells -- ): extends the array at
addr by ncells cellsLENGTH ( addr -- len ): pushes the length of the array
at addr onto the stackLENGTH? ( addr -- ): prints the length of the array at
addr' xxx ( -- addr ): attempts to find xxx in
the dictionary, and pushes an execution token for xxx to
the stack if foundEXECUTE ( xt -- ): executes an execution token on top
of the stack['] xxx ( -- addr ): currently equivalent to
' for froth