这是什么功能“模式”叫什么名字?
-
22-07-2019 - |
题
我打打闹闹一些函数式编程,当我遇到这方面的需要的功能来了,但我不知道这是什么样的东西就是所谓的标准术语。 任何人都能够识别它?
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中:
只有constantly
返回函数采用的参数的任意的量,使得它更一般的(和柔性)比你的图案。
我不知道,如果这种模式有一个名称,但会在正常功能的情况下,预计使用它,但我关心的是一定值返回:
(map (constantly 9) [1 2 3])
=> (9 9 9)
只是想知道,你怎么用这个?
一个代表?
基本上你正在返回的函数??或函数的输出是什么?
没明白,对不起......