【问题标题】:Terminology: Partial application where the unbound argument is a function?术语:未绑定参数是函数的部分应用?
【发布时间】:2011-08-12 06:10:49
【问题描述】:

...partial application(或部分函数应用)指的是修复一个 一个函数的参数数量,产生另一个更小参数的函数。

我想知道以下是否有特定名称:(pseudo-code!)

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

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

【问题讨论】:

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


    【解决方案1】:

    实际上,您的 call_N 函数之类的东西还有更多,而不仅仅是部分应用。有两点需要注意:

    • 当您将call_1call_2 应用于参数时,它们可以立即被丢弃; 你对他们所做的一切都是尾声。

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

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

    【讨论】:

    • 谢谢...我的头有点晕,虽然维基百科的文章 :-)
    • @Martin:别担心。过多地考虑延续对几乎每个人都是如此。 :]
    猜你喜欢
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2017-09-03
    • 1970-01-01
    • 2020-09-21
    • 2016-11-19
    相关资源
    最近更新 更多