这可能是一个相当明显的问题,但我就是想不通。
我正在尝试编写一个对列表中的偶数进行平方的函数。当我尝试运行它时,我收到关于我使用 even 函数的错误。我怎样才能解决这个问题?
module SquareEvens where
squareEvens :: [Integer] -> [Integer]
squareEvens n = [ns * ns | ns <- n, even n]
最佳答案
如果您将 even n
更改为 even ns
,则代码可以正常工作:
squareEvens n = [ns * ns | ns <- n, even ns]
但请注意,惯例是使用复数来命名列表,使用单数来命名列表中的元素。所以交换
n
和 ns
以遵循惯用的 Haskell 用法:squareEvens ns = [n * n | n <- ns, even n]
关于Haskell 偶函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15629037/