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
を定義してみましょう。