术语:部分应用程序,其中未绑定参数是一个函数?

时间:2011-08-12 06:10:50

标签: functional-programming lambda-calculus partial-application

  

... partial application(或部分功能应用程序)是指修复a的过程   函数的参数个数,产生较小的arity的另一个函数。

我想知道以下是否有特定名称:(伪代码!

// 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)

在函数式编程中是否有这个名称?或者它只是部分应用程序,其中未绑定的参数恰好是一个函数

1 个答案:

答案 0 :(得分:1)

实际上,除了部分应用之外,您的call_N功能还有更多功能。有两点需要注意:

  • 当您将call_1call_2应用于参数时,可以立即将其丢弃; 你用它们做的所有将是一个尾调用。

  • 您可以编写类似的函数,这些函数不仅仅应用参数,而是保留一段时间;这实际上让函数抓住了它们的评估上下文,并通过“跳回”到以前的上下文来提供实现复杂流控制的技术。

如果你采用上述两点并按照这个概念运行,你最终会得到continuation-passing style