Rebol 3にはFUNCTIONの新しい実装があり、デフォルトで変数をローカルコンテキストに自動的にバインドできます。
FUNCTIONにVALUEに問題があるようです。実行時に変数がまだ設定されていない場合でもTRUEを返すため、テストします。
foo: function [] [
if value? 'bar [
print [{Before assignment, bar has a value, and it is} bar]
]
bar: 10
if value? 'bar [
print [{After assignment, bar has a value, and it is} bar]
]
]
FOOに電話すると、次のようになります。
Before assignment, bar has a value, and it is none
After assignment, bar has a value, and it is 10
これはFUNCの動作方法ではありません(割り当て後にBARに値があるとだけ表示されます)。ただし、FUNCは変数を自動的にローカルにしません。
ここで、LadislavMecirによって作成されたライブラリでFUNCSプリミティブを見つけました。それはどのように異なり、同じ欠点がありますか?