kernel vocabulary
Factor handbook ยป Vocabulary index


Summary
Data and control flow, basic object protocol

Metadata
Authors:Slava Pestov


Words

Builtin classes
callstack
tuple
wrapper


Tuple classes
ClassSuperclassSlots
assert tuplegot expect
composed tuplefirst second
curried tupleobj quot
identity-tuple tuple


Union classes
boolean
null


Intersection classes
object


Generic words
WordStack effect
boa( slots... class -- tuple )
call( callable -- )
clone( obj -- cloned )
equal?( obj1 obj2 -- ? )
execute( word -- )
hashcode*( depth obj -- code )
new( class -- tuple )
throw( error -- * )


Primitives
WordStack effect
(clone)( obj -- newobj )
-rot( x y z -- z x y )
2drop( x y -- )
2dup( x y -- x y x y )
2nip( x y z -- z )
3drop( x y z -- )
3dup( x y z -- x y z x y z )
4drop( w x y z -- )
4dup( w x y z -- w x y z w x y z )
<wrapper>( obj -- wrapper )
callstack>array( callstack -- array )
die( -- )
drop( x -- )
dup( x -- x x )
dupd( x y -- x x y )
eq?( obj1 obj2 -- ? )
nip( x y -- y )
over( x y -- x y x )
pick( x y z -- x y z x )
rot( x y z -- y z x )
swap( x y -- y x )
swapd( x y z -- y x z )


Ordinary words
WordStack effect
-roll( w x y z -- z w x y )
-rotd( w x y z -- y w x z )
1check( ..a x quot: ( ..a x -- ..b ? ) -- ..b x ? )
1guard( ..a x quot: ( ..a x -- ..b ? ) -- ..b x/f )
1if( ..a x pred: ( ..a x quot: ( ..a x -- ..b ? ) -- ..b x ? ) true: ( ..b x -- ..c ) false: ( ..b x -- ..c ) -- ..c )
1unless( ..a x pred: ( ..a x -- ..b ? ) false: ( ..b x -- ..b x ) -- ..b x )
1when( ..a x pred: ( ..a x -- ..b ? ) true: ( ..b x -- ..b x ) -- ..b x )
2bi( x y p q -- )
2bi*( w x y z p q -- )
2bi@( w x y z quot -- )
2check( ..a x y quot: ( ..a x y -- ..b ? ) -- ..b x y ? )
2curry( obj1 obj2 quot -- curried )
2dip( x y quot -- x y )
2guard( ..a x y quot: ( ..a x y -- ..b ? ) -- ..b x/f y/f )
2if( ..a x y pred: ( ..a x y -- ..b x y ? ) true: ( ..b x y -- ..c ) false: ( ..b x y -- ..c ) -- ..c )
2keep( ..a x y quot: ( ..a x y -- ..b ) -- ..b x y )
2keepd( ..a x y z quot: ( ..a x y z -- ..b ) -- ..b x y )
2nipd( w x y z -- y z )
2over( x y z -- x y z x y )
2tri( x y p q r -- )
2tri*( u v w x y z p q r -- )
2tri@( u v w x y z quot -- )
2unless( ..a x y pred: ( ..a x y -- ..b ? ) false: ( ..b x y -- ..b x y ) -- ..b x y )
2when( ..a x y pred: ( ..a x y -- ..b ? ) true: ( ..b x y -- ..b x y ) -- ..b x y )
2with( param1 param2 obj quot -- obj curried )
3bi( x y z p q -- )
3check( ..a x y z quot: ( ..a x y z -- ..b ? ) -- ..b x y z ? )
3curry( obj1 obj2 obj3 quot -- curried )
3dip( x y z quot -- x y z )
3guard( ..a x y z quot: ( ..a x y z -- ..b ? ) -- ..b x/f y/f z/f )
3if( ..a x y z pred: ( ..a x y z -- ..b x y z ? ) true: ( ..b x y z -- ..c ) false: ( ..b x y z -- ..c ) -- ..c )
3keep( ..a x y z quot: ( ..a x y z -- ..b ) -- ..b x y z )
3nip( w x y z -- z )
3nipd( v w x y z -- y z )
3tri( x y z p q r -- )
3unless( ..a x y z pred: ( ..a x y z -- ..b ? ) false: ( ..b x y z -- ..c x y z ) -- ..b x y z )
3when( ..a x y z pred: ( ..a x y z -- ..b ? ) true: ( ..b x y z -- ..b x y z ) -- ..b x y x )
4dip( w x y z quot -- w x y z )
4keep( ..a w x y z quot: ( ..a w x y z -- ..b ) -- ..b w x y z )
4nip( v w x y z -- z )
4spin( w x y z -- z y x w )
5drop( v w x y z -- )
5nip( u v w x y z -- z )
=( obj1 obj2 -- ? )
>boolean( obj -- ? )
?( ? true false -- true/false )
?call( ..a obj/f quot: ( ..a obj -- ..a obj' ) -- ..a obj'/f )
?if( ..a default cond: ( default -- new/f ) true: ( ..a new -- ..b ) false: ( ..a default -- ..b ) -- ..b )
?transmute( old quot: ( old -- new/f ) -- new/old new? )
?unless( ..a default cond: ( ..a default -- ..a new/f ) false: ( ..a default -- ..a x ) -- ..a default/x )
?when( ..a default cond: ( ..a default -- ..a new/f ) true: ( ..a new -- ..a x ) -- ..a default/x )
and( obj1 obj2 -- obj2/f )
and*( obj1 obj2 -- obj1/f )
assert( got expect -- * )
assert=( a b -- )
bi( x p q -- )
bi*( x y p q -- )
bi-curry( x p q -- p' q' )
bi-curry*( x y p q -- p' q' )
bi-curry@( x y q -- p' q' )
bi@( x y quot -- )
both?( x y quot -- ? )
build( -- n )
clear( -- )
compose( quot1 quot2 -- compose )
curry( obj quot -- curry )
dip( x quot -- x )
do( pred body -- pred body )
either?( x y quot -- ? )
get-callstack( -- callstack )
get-datastack( -- array )
get-retainstack( -- array )
hashcode( obj -- code )
identity-hashcode( obj -- code )
if( ..a ? true: ( ..a -- ..b ) false: ( ..a -- ..b ) -- ..b )
if*( ..a ? true: ( ..a ? -- ..b ) false: ( ..a -- ..b ) -- ..b )
keep( ..a x quot: ( ..a x -- ..b ) -- ..b x )
keepd( ..a x y quot: ( ..a x y -- ..b ) -- ..b x )
keepdd( ..a x y z quot: ( ..a x y z -- ..b ) -- ..b x )
loop( ... pred: ( ... -- ... ? ) -- ... )
most( x y quot -- z )
negate( quot -- quot' )
nipd( x y z -- y z )
not( obj -- ? )
or( obj1 obj2 -- obj1/obj2 )
or*( obj1 obj2 -- obj2/obj1 )
or?( obj1 obj2 -- obj2/obj1 second? )
overd( x y z -- x y x z )
pickd( w x y z -- w x y w z )
prepose( quot1 quot2 -- composed )
reach( w x y z -- w x y z w )
roll( w x y z -- x y z w )
rotd( w x y z -- x y w z )
same?( x y quot -- ? )
spin( x y z -- z y x )
transmute( old quot: ( old -- new/f ) -- new/old )
tri( x p q r -- )
tri*( x y z p q r -- )
tri-curry( x p q r -- p' q' r' )
tri-curry*( x y z p q r -- p' q' r' )
tri-curry@( x y z q -- p' q' r' )
tri@( x y z quot -- )
tuck( x y -- y x y )
unless( ..a ? false: ( ..a -- ..a ) -- ..a )
unless*( ..a ? false: ( ..a -- ..a x ) -- ..a x )
until( ..a pred: ( ..a -- ..b ? ) body: ( ..b -- ..a ) -- ..b )
until*( ..a pred: ( ..a -- ..b ? ) body: ( ..b -- ..a ) -- ..b ? )
when( ..a ? true: ( ..a -- ..a ) -- ..a )
when*( ..a ? true: ( ..a ? -- ..a ) -- ..a )
while( ..a pred: ( ..a -- ..b ? ) body: ( ..b -- ..a ) -- ..b )
while*( ..a pred: ( ..a -- ..b ? ) body: ( ..b ? -- ..a ) -- ..b )
with( param obj quot -- obj curried )
withd( param obj quot -- obj curried )
xor( obj1 obj2 -- obj1/obj2/f )


Class predicate words
WordStack effect
assert?( object -- ? )
boolean?( object -- ? )
callstack?( object -- ? )
composed?( object -- ? )
curried?( object -- ? )
identity-tuple?( object -- ? )
tuple?( object -- ? )
wrapper?( object -- ? )


Files


Metadata files