我在网上的一份过去的考试论文中,它要求我们使用列表理解来重写以下高阶函数:
hofOne = map (*2) [1,2,3]
hofTwo = filter isSquare randomList
我不确定我是否误解了高阶函数,因为我认识到map
和filter
函数本身都是高阶函数,但是我不明白这是如何产生的当hofOne
和hofTwo
都不以函数作为参数,也不以函数作为结果时,它们的功能更高。
有什么我想念的吗?
答案 0 :(得分:0)
您是正确的。 Wikipedia - Higher-order function文章将高阶函数定义为在其参数之一中采用函数或将函数作为结果返回。目的可能是将高阶函数map
和filter
(它们是高阶函数)重写为列表推导。
在没有给出问题答案的情况下,这是两个示例,这些示例说明了如何以预期的样式使用列表推导。
-- map as list comprehension
[doSomething x | x <- [1..10]]
-- filter as list comprehension
[x | x <- [1..10], somethingThatReturnsBool x]
对于不熟悉Haskell列表理解的任何人,请查看此article。