鉴于以下职能有两个论点,对地图适用的标准方法是什么?
A 很少讨论治疗和部分应用<>。
In FP terms, your function f
is "uncurried" - while it conceptually takes two arguments, they re bundled in a single product structure. In Python, everything is uncurried, all the time. You have to give all the arguments at once, or none of them.
为了围绕这一点开展工作,有各种陷阱,但从概念上来说,你只是想“保证”这一功能。 也就是说,将<代码>f(x,y)改为f(x)
,其中回收新的功能<代码>g(y)。
以因缺省而治愈的语文,您可以轻松地撰写这一译文:
-- curry: take a function from (x,y) to one from x to a function from y to z
curry :: ((x,y) -> z) -> (x -> y -> z)
curry f x y = f (x, y)
So curry
请分别使用<<条码>f条码>及其产品论点,并在所有理由均可获得时适用这些论点。 反之亦然:
uncurry :: (x -> y -> z) -> ((x,y) -> z)
uncurry f (x,y) = f x y
这与部分适用有何关系?
- Currying takes a function that takes a structure of 1 (n-product) argument, and returns a new function taking n arguments.
- Partial application takes a function of n arguments and applies them to k arguments, yielding a function of n-k remaining arguments.
可以用一种未加收的语文提出每一论点(例如,部分涉及职能的性质)。 如上述例子所示,用粗略语言,你必须首先玩笑不动。
我认为,由于部分应用是免费的,因此,更灵活地进入一个 cur的环境下。 在这种环境中,通常将以下职能合并起来:>。 举例说,一管重整:
(+1) . (*2) . (^3) $ 7
只是部分适用、未经采购的职能的链条,每个功能都根据先前的职能的产出运作。 这可能是空洞的,因为它视而不见。