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 yyy
FORGET 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^b
negate ( a -- n )
: negates a
abs ( a -- n )
: takes the absolute value of
a
min ( 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) %/% c
if
: 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 TRUE
OR
: push TRUE
if at least one of the top
two elements are TRUE
XOR
: push TRUE
if exactly one of the top
two elements is TRUE
NOT
: 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 end
LOOP ( -- )
: 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 BEGIN
WHILE ( flag -- )
: if flag
, continue; else
jump to after REPEAT
REPEAT ( -- )
: returns to BEGIN
following
WHILE
LEAVE ( -- )
: 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 addr
CONSTANT xxx (n -- )
: creates a constant called
xxx
that stores n
; xxx
returns
n
when calledALLOT ( addr ncells -- )
: allocates ncells
cells at addr
CREATE xxx y1 , y2 , ... yn ,
: creates an array
xxx
with values y1, y2, ... yn
CELLS ( n -- )
: creates a memory address offset for
arraysFILL ( addr ncells val -- )
: fills ncells
cells of memory beginning at addr
with
val
ERASE ( 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
These 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.