Literal ¶数値を POSTPONE することはできません:
: [FOO] POSTPONE 500 ; immediate
代わりに LITERAL (compilation: n --; run-time: -- n ) を使用します:
: [FOO] ( compilation: --; run-time: -- n ) 500 POSTPONE literal ; immediate : flip [FOO] ; flip . see flip
LITERAL は、 コンパイル時(コンパイル機能(compilation semantics)が実行される時)に数値を消費し、
実行時(コンパイルされたコードが実行されるとき)にそれをプッシュします。 LITERAL のよくある使用法は、
コンパイル時に計算された数値を現在のワードにコンパイルすることです:
: bar ( -- n ) [ 2 2 + ] literal ; see bar
研究課題(assignment): 上記の例を
: bar ( -- n ) [ 2 2 + ]L ;と記述できるような]Lを定義してみましょう。