Next: , Previous: , Up: Forth Tutorial   [Contents][Index]


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