The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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 frothThese binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.