1

...部分適用(または部分機能適用)とは、関数にいくつかの引数を固定し、より小さなアリティの別の関数を生成するプロセスを指します。

次の名前が特定されているかどうかを確認したいと思います:(擬似コード!

// Given functions:
def f(a, b) := ...
def g(a, b) := ...
def h(a, b) := ...

// And a construct of the following:
def cc(F, A, B) := F(A, B) // cc calls its argument F with  A and B as parameters

// Then doing Partial Application for cc:
def call_1(F) := cc(F, 42, "answer")
def call_2(F) := cc(F, 7, "lucky")

// And the calling different matching functions this way:
do call_1(f)
do call_1(g)
do call_2(g)
do call_2(h)

関数型プログラミングでこれに名前はありますか?それとも、バインドされていないパラメータがたまたま関数である部分適用ですか?

4

1 に答える 1

1

実際、関数のようなものには、call_N部分適用だけでなく、さらに多くのものがあります。注意すべき2つのこと:

  • call_1または引数に適用するcall_2と、すぐに破棄できます。それらを使用して行うことはすべて末尾呼び出しになります。

  • 引数を適用するだけでなく、しばらくそれを保持する同様の関数を作成できます。これにより、関数は基本的に評価コンテキストを取得し、以前のコンテキストに「ジャンプバック」することで複雑なフロー制御を実装するための手法を提供します。

上記の2つのポイントを取り、コンセプトを実行すると、最終的には継続渡しスタイルになります。

于 2011-08-12T06:51:23.347 に答える