2

Ozの変数に関数呼び出し全体をバインドする方法があるかどうか知りたいです。たとえば、私は持っています:

fun {F1 A1 A2} 
    A1+A2 
end

およびローカル変数X

私がやりたいのは、結果ではなく、呼び出しを(そのままで)格納することです{F1 1 2}。これにより、何らかの方法で。を参照して再度呼び出すことができます。X3{F1 1 2}X

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

ご回答ありがとうございます。

4

1 に答える 1

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を呼び出す匿名のnullary関数を作成して返します。(この手法は、Haskellのような言語での部分機能アプリケーションに似ています。)

Procedure.applyライブラリ関数(doc )を使用して、任意の数の引数に対してこれを一般化することができます。あなたがこれをしたいと思って助けが必要な場合は、私に知らせてください。

于 2012-04-19T17:48:56.617 に答える