我目前正在学习Haskell,我必须说,我过得很糟糕。
我的任务是创建一个函数evens,该函数接受一个值x,并返回从0to到所有偶数的列表x。
例如:
Run Code Online (Sandbox Code Playgroud)> evens 10 > [2,4,6,8,10]
我一直在尝试使用列表理解来修改一些示例函数,以实现我的目标,但是我简直陷入了很多错误,更糟糕的是,即使我尝试了很多事情,所有的一切都变得令人困惑。
我最后的尝试如下:
evens :: int -> [int]
evens n = [x | x <- [0..n], filter even x]
Run Code Online (Sandbox Code Playgroud)
它产生了错误:
ex1.hs:9:29:错误:
•无法将预期类型“布尔”与实际类型“ [整数]”匹配
•在表达式中:
filter even x在列表理解的步骤中:
filter even x在表达式中:
[x | x <- [0 .. n], filter even x]
我确实看到它期望布尔值,但是坦率地说,我不知道在哪里或为什么。
任何帮助将不胜感激。我从没有使用过函数式编程语言的经验,并且很难弄清自己在思想上的错误。我觉得我已经超出了这个简单的问题,以至于难以置信。