【发布时间】:2019-06-08 13:24:17
【问题描述】:
我正在从“Learn You a Haskell for Great Good!”中学习高阶函数!米兰利波卡。我知道翻转函数接受一个函数并返回一个与原始函数一样的函数,但前两个参数翻转了。
我不完全理解以下带有地图功能的示例的工作原理。
ghci> map (flip subtract 20) [1,2,3,4]
[19,18,17,16]
Map 接受一个函数并将其应用于列表的每个元素,从而生成一个新列表。但是由于翻转是函数映射,带有参数subtract 20 [1,2,3,4],结果函数会是20 subtract [1,2,3,4]吗?
我认为这是不正确的,因为只有在您输入 subtract 1 20 时才会产生像 19 这样的值。我不确定在上面的示例中如何使用减法来生成输出列表。
【问题讨论】:
-
基本上
flip如果您可以使用函数的中缀表示法,则有时是不必要的。如`subtract` 20。所以你可以做map (`subtract` 20) [1,2,3,4]。或者更好map ((-) 20) [1,2,3,4] -
括号很重要——你不能“分解”
(flip subtract 20)。
标签: haskell functional-programming higher-order-functions