extFactor for ver.
拡張辞書 extFactor は、
Factor
の if 文を Paraphrase でも実現するものです。
※参考実装ですが、ソースコードは src/dict/ext/extFactor.cpp にあります。
Factor における if 文は、Paraphrase とは異なり、以下のように記述されます。
		
		[ true-part ] [ false-part ] if 
		
	
少し補足説明をすると、Factor における大括弧 [ ] は、
Paraphrase で言うところの無名ワードブロックを構成するものであり、
Paraphrase 的に書くと、
    { true-part } { false-part } if 
となります。 
話を Factor に戻しましょう。 例えば、TOS が奇数のときには odd を、偶数の時には even と表示するコードを Factor で書く場合、以下のように記述できます。
			
			2 mod 1 = [ "odd" ] [ "even" ] if . 
			
	
この方法はワード if に即時実行属性を与えることなく、 条件判断を実装できるという特徴があります (が、この方法はプログラミングしづらいのでは?と判断したため Paraphrase では採用しませんでした)。
本拡張辞書は Factor 方式の if 文を実現する factor:if を提供します。 使用方法は以下の通りです(って、そのままですね…)。
		
		{ true-part } { false-part } factor:if 
		
	
実際の使用例については以下のワードリファレンスを参照して下さい。
factor:if
| 実行レベル | 標準実行レベル | 
|---|---|
| スタックの変化 | B W W --- | 
| 機能 | スタックの上から 3 番目の真偽値に応じて、 真ならばセカンドにある無名ワードを、 偽ならば TOS にある無名ワードを実行します。 | 
| 使用例 | TOS の値に応じて奇数ならば odd を、
		偶数ならば even を表示するコードを以下に示します。 
				
					↓ Windows の場合は "ext/extFactor.dll"
				 | 
| エラー | スタック上に、 想定された値がプッシュされていないとエラーとなります。 | 
ちなみに、factor:if と同じ動作をする factor-like-if は、 以下のように定義することもできます。
		"factor-like-if" : 
		    rot if 
		        drop exec 
		    else 
		        swap drop exec 
		    then 
		;
	
	>  true { "T" } { "F" } factor-like-if . 
T ok.
> false { "T" } { "F" } factor-like-if .
F ok.
T ok.
> false { "T" } { "F" } factor-like-if .
F ok.