Next: , Previous: , Up: Programming Tools   [Contents][Index]


6.26.6 Forgetting words

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