スタック操作用のコマンド (表 4-3 で説明) では、スタック上の項目の追加、削除、並べ替えができます。
表 4-3 スタック操作コマンド
コマンド |
スタックダイアグラム |
説明 |
---|---|---|
clear |
( ??? -- ) |
スタックを空にします。 |
depth |
( ... -- ... u ) |
スタック上の項目数を返します。 |
drop |
( x -- ) |
一番上のスタック項目を削除します。 |
2drop |
( x1 x2 -- ) |
スタックから 2 つの項目を削除します。 |
3drop |
( x1 x2 x3 -- ) |
スタックから 3 つの項目を削除します。 |
dup |
( x -- x x ) |
一番上のスタック項目を複製します。 |
2dup |
( x1 x2 -- x1 x2 x1 x2 ) |
2 つのスタック項目を複製します。 |
3dup |
( x1 x2 x3 -- x1 x2 x3 x1 x2 x3 ) |
3 つのスタック項目を複製します。 |
?dup |
( x -- x x | 0 ) |
一番上のスタック項目がゼロ以外の場合、複製します。 |
nip |
( x1 x2 -- x2 ) |
2番目のスタック項目を削除します。 |
over |
( x1 x2 -- x1 x2 x1 ) |
2 番目のスタック項目をスタックの一番上にコピーします。 |
2over |
( x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2 ) |
初めから 2 つのスタック項目をコピーします。 |
pick |
( xu ... x1 x0 u -- xu ... x1 x0 xu ) |
u 番目のスタック項目をコピーします (1 pick = over)。 |
>r |
( x -- ) (R: -- x ) |
スタック項目を復帰スタックに転送します。 |
r> |
( -- x ) ( R: x -- ) |
復帰スタック項目をスタックに転送します。 |
r@ |
( -- x ) ( R: x -- x ) |
復帰スタックの一番上をスタックにコピーします。 |
roll |
( xu ... x1 x0 u -- xu-1 ... x1 x0 xu ) |
u 個のスタック項目を回転します (2 roll = rot)。 |
rot |
( x1 x2 x3 -- x2 x3 x1 ) |
3 つのスタック項目を逆方向に回転します。 |
-rot |
( x1 x2 x3 -- x3 x1 x2 ) |
3 つのスタック項目を逆方向に回転します。 |
2rot |
( x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2 ) |
3 対のスタック項目を回転します。 |
swap |
( x1 x2 -- x2 x1 ) |
一番上の 2 つのスタック項目を入れ換えます。 |
2swap |
( x1 x2 x3 x4 -- x3 x4 x1 x2 ) |
2 対のスタック項目を入れ換えます。 |
tuck |
( x1 x2 -- x2 x1 x2 ) |
一番上のスタック項目を 2 番目の項目の下にコピーします。 |
代表的なスタック操作の用途は、次の例に示すように、すべてのスタック項目を保持しておきながら、一番上のスタック項目を表示することです。
5 77 ok dup (一番上のスタック項目を複製) 5 77 77 ok . (一番上のスタック項目を削除し、表示) 77 5 77 ok |