我打打闹闹一些函数式编程,当我遇到这方面的需要的功能来了,但我不知道这是什么样的东西就是所谓的标准术语。 任何人都能够识别它?

function WhatAmIDoing(args...)
   return function()
       return args
   end
end

修改广义的功能,它需要的参数的变量量(或者可能是隐式的列表),并返回一个功能是,当被调用返回所有的指定参数时,像咖喱或泡菜,但它似乎没有被任一

有帮助吗?

解决方案

WhatAmIDoing是高阶函数,因为它是一个返回另一个函数的函数。

,它返回的东西是一个 - 的闭合用于延迟计算创建实际价值。一般的thunk创建延迟计算表达式(以及可能memoize的),但在其他情况下,简单地需要在适当位置的裸值的函数,如在“constantly 5”的情况下,这在某些语言中返回一个函数,它总是返回5。

,后者可能适用于给定的例子中,因为假设的语言应用性顺序评估(即调用函数之前评估参数),该函数用于没有别的目的而打开的值成返回它们的功能。

WhatAmIDoing真的是“不断地”功能我被描述的实施方案。但在一般情况下,你不必在内部函数只返回args。你可以返回“ackermann(args)”,这可能需要很长的时间,如...

function WhatAmIDoing2(args...)
   return function()
       return ackermann(args)
   end
end

但是WhatAmIDoing2将立即返回,因为阿克曼函数的评价将在闭合。 (是的,即使在呼叫按值的语言。)

其他提示

在功能编程该另需函数作为参数或返回另一个功能的功能被称为 higher-次函数

我会说,XXXX返回闭合结合上的x,y和z中的值未命名功能的

维基制品可以阐明一些

讨好是关于变换的功能的功能的链,每次服用只有一个参数并返回另一个这样的功能。所以,本实施例没有任何关系讨好。

酸洗是后容易用于表示某种序列的一个术语。也许用于存储从多个值建立了一个对象。

如果吸引您的方面是,返回的函数可以访问XXXX函数的参数,然后我会去Remo.D。

正如其他人所说,这是一个高阶函数。当你在你的问题有“模式”,我想我补充一点,函数式语言的这一功能使用的策略模式中的语言不的高阶函数。

非常类似的东西被称为constantly Clojure中:

http://github.com /richhickey/clojure/blob/ab6fc90d56bfb3b969ed84058e1b3a4b30faa400/src/clj/clojure/core.clj#L1096

只有constantly返回函数采用的参数的任意的量,使得它更一般的(和柔性)比你的图案。

我不知道,如果这种模式有一个名称,但会在正常功能的情况下,预计使用它,但我关心的是一定值返回:

(map (constantly 9) [1 2 3])
=> (9 9 9) 

只是想知道,你怎么用这个?

一个代表?

基本上你正在返回的函数??或函数的输出是什么?

没明白,对不起......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top