base-execute
を理解する必要があると理解してくださいexecute
とBASE
です。また、スタック効果でi*x
とj*x
を読み取る方法についても説明します。
execute
は、実行トークンxt
を実行して実行します。 ' 1+ execute
は、1+
と同じです。ただし、xt
をあらかじめ選択する必要はなく、スタックに渡すことができるため、execute
を使用する理由があります。例えば:
: exec-twice dup >r execute r> execute ;
2 ' 1+ exec-twice . (this outputs 4)
BASE
数値ベースが入力と出力に使用するかを制御する変数です。 BASE
は最初は10です。したがって5 2 BASE ! .
は101
(これはベース2に5)を出力します。
base-execute
は、それらを一緒に置く:それは、u
にBASE
を変更xt
を実行し、その前の値にBASE
を復元します。その実装は次のようになります。i*x xt u -- j*x
のための今
: squared (n1 -- n2) dup * ;
: squares (n --) 0 do i squared . loop ;
10 squares (0 1 4 9 16 25 36 49 64 81)
: hex-execute (i*x xt -- j*x) 16 base-execute ;
10 ' squares hex-execute (0 1 4 9 10 19 24 31 40 51)
10 squares (0 1 ... 81 we're back to decimal)
:ここ
: base-execute BASE @ >r BASE ! execute r> BASE ! ;
は使用例です、あなたがリンクされ
スタック表記のドキュメントへの情報のほとんどを持っていますその効果を読み取る必要があります。 i*x -- j*x
は、何かがスタックに発生する可能性がありますが、何も指定していないことを意味します。この場合、正確なスタック効果はxt
の値に依存します。
xt
のスタック効果の両面でi*x
とj*x
を置き換え、与えられたxt
でスタック効果を知っています。
たとえば、xt
が' .
の場合、n --
という.
のスタックエフェクトが表示されます。その場合、base-execute
のスタック効果はn xt-of-. u --
と考えることができます。
非常に参考になりますが、上記から '* base-execute'を使用する方法は明らかではありません。答えは、基本的なサンプルの使用法または2つで改善されます。 – agc
良い点、私は例を追加します。 –
ありがとう!ちょうど普通の 'base-execute'は楽しいです。すなわち、' 10 '四角形は3つの場合は3つの基底が実行され、 '10は四捨五入されます。95 base-execute'は暗黙のためです。 – agc