forth は、 ワード達 (および、 その後ろでディクショナリー割り当てられたすべての内容) を LIFO 方式で忘れさすことができます。
marker
( "<spaces> name" – ) core-ext “marker”
name という定義を作成します(マーク(mark)と呼ばれる)。 その実行機能(execution semantics)は、
それ自体とその後に定義されたすべてのものを削除します(訳注: 注意: 古典的な forth の forget name
と異なり、
任意のワード以降を「忘れる」コマンドでは無い事に注意。 あらかじめ marker
でマークした位置でしか「忘れる」事はできない)。
この機能の最も一般的な使用法は、 プログラム開発時です。 ソース・ファイルを変更するときは、 定義されているワードをすべて忘れて、 再度ロードします(ソース・ファイルのロード後に定義されたワードもすべて忘れるので、 それも再ロードする必要があります)。 変数への保存やシステム・ワードの破壊などの効果は、 ワードを忘れても元に戻されないことに注意してください。 著者は、 gforth のようなシステムでは、 起動とコンパイルが十分に速いので、 gforth を終了して再起動する方が、 白紙の状態(clean state)で使えるので便利だと思います。
デバッグしているソース・ファイルの先頭で marker
を使用する例を以下に示します。 これにより、
そのファイルの定義は二重定義されないようになります。
[IFDEF] my-code my-code [ENDIF] marker my-code init-included-files \ .. definitions start here \ . \ . \ end