在过去的一次考试中,我在网上找到了一篇论文,它要求我们使用列表理解重写以下高阶函数:
hofOne = map (*2) [1,2,3]
hofTwo = filter isSquare randomList我不确定我是否误解了高阶函数,因为我认识到map和filter函数本身都是高阶函数,但我不明白这如何使hofOne和hofTwo函数变得更高阶,因为这两个函数既不接受函数作为参数,也不返回函数。
我是不是漏掉了什么?
发布于 2019-11-26 02:14:49
你是对的。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。
https://stackoverflow.com/questions/53961803
复制相似问题