2

Ozの変数に関数呼び出し全体をバインドする方法があるかどうかを知りたい。 例えば、私が持っているん:関数/プロシージャコールをOzに保存する方法はありますか?

fun {F1 A1 A2} 
    A1+A2 
end 

とローカル変数Xを。

私が何をしたいのか、その結果Xではありません(そのまま)コール{F1 1 2}を格納している:3、私は何とかXを参照することにより、再び再び{F1 1 2}を呼び出すことができます ように。

これはオズで可能ですか?もしそうなら、どうですか?

ありがとうございました。

答えて

2

最も簡単な方法は、引数をとらない関数を動的に作成することです。

fun {CreateCall F A1 A2} 
    fun {$} 
     {F A1 A2} 
    end 
end 

fun {F A1 A2} 
    A1 + A2 
end 

C = {CreateCall F 1 2} 

{Show {C}} 

機能CreateCallは、与えられた引数でFを呼び出す匿名引数なしの関数を作成して返します。 (このテクニックは、Haskellのような言語の部分関数アプリケーションに似ています)Procedure.applydoc)を使用して任意の数の引数に対してこれを一般化することができます。これを行い、助けが必要な場合は、私に知らせてください。

+0

ありがとう、それはトリックでした。 – mhourdakis

関連する問題