古典的FORTHを触った事があって、 GNU gforth などを使った時に、 困惑するのが FORGET が無い事です。
FORGET は その名の通り「忘れる」ワードです。
forget name
とすると、 name と name 以降に定義したワードを「忘れる」、つまり削除するというものです。
marker
gforth では 代わりに marker を使います。使い方も異なっています。
将来、ここ以降は「忘れたい」ポイントで marker を定義する。
marker my-lib-start
そして、「忘れる」のは
my-lib-start
です。
実際には forth プログラムのファイルをロードするたびに以前定義下同じモノを消すような処理(消さないと二重登録される)のためです
[IFDEF] my-code ( 既に定義済かどうか?)
my-code ( 定義済なら「忘れる」)
[ENDIF]
marker my-code ( ここに来る時はいずれにせよ「無い」か「忘れてる」ので、今後のために「忘れる」時点を marker で登録する)
init-included-files
\ .. definitions start here
\ .
\ .
\ end
ディクショナリへの追加・削除はメモリ上での話なので、 うっかり marker し忘れても一旦 gforth 自体を終了・起動すれば元に戻ります。
今回はここまで。