kernel vocabulary - Factor Documentation (original) (raw)

Summary
Data and control flow, basic object protocol

Metadata

Authors: Slava Pestov

Words

Builtin classes

callstack
tuple
wrapper

Tuple classes

Class Superclass Slots
assert tuple got expect
composed tuple first second
curried tuple obj quot
identity-tuple tuple

Union classes

boolean
null

Intersection classes

object

Generic words

Word Stack 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

Word Stack 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 )
( 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

Word Stack 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

Word Stack effect
assert? ( object -- ? )
boolean? ( object -- ? )
callstack? ( object -- ? )
composed? ( object -- ? )
curried? ( object -- ? )
identity-tuple? ( object -- ? )
tuple? ( object -- ? )
wrapper? ( object -- ? )

Files

resource:core/kernel/kernel.factor
resource:core/kernel/kernel-docs.factor
resource:core/kernel/kernel-tests.factor

Metadata files

resource:core/kernel/authors.txt
resource:core/kernel/summary.txt