Ozの変数に関数呼び出し全体をバインドする方法があるかどうか知りたいです。たとえば、私は持っています:
fun {F1 A1 A2}
A1+A2
end
およびローカル変数X
。
私がやりたいのは、結果ではなく、呼び出しを(そのままで)格納することです{F1 1 2}
。これにより、何らかの方法で。を参照して再度呼び出すことができます。X
3
{F1 1 2}
X
これはオズで可能ですか?もしそうなら、どのように?
ご回答ありがとうございます。
Ozの変数に関数呼び出し全体をバインドする方法があるかどうか知りたいです。たとえば、私は持っています:
fun {F1 A1 A2}
A1+A2
end
およびローカル変数X
。
私がやりたいのは、結果ではなく、呼び出しを(そのままで)格納することです{F1 1 2}
。これにより、何らかの方法で。を参照して再度呼び出すことができます。X
3
{F1 1 2}
X
これはオズで可能ですか?もしそうなら、どのように?
ご回答ありがとうございます。
最も簡単な方法は、引数をとらない関数を動的に作成することです。
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を呼び出す匿名のnullary関数を作成して返します。(この手法は、Haskellのような言語での部分機能アプリケーションに似ています。)
Procedure.apply
ライブラリ関数(doc )を使用して、任意の数の引数に対してこれを一般化することができます。あなたがこれをしたいと思って助けが必要な場合は、私に知らせてください。