Haskell过滤器函数错误

时间:2012-01-03 13:12:02

标签: haskell

我想列出所有除以n的整数。这是一个家庭作业问题。到目前为止,我已经做到了这一点。

divisors :: Int -> [Int]
divisors n | n < 1 = []
           | otherwise = filter (\n -> n `mod` x == 0) [1..n]
             where x = [1..n]

我知道这是错误的,但我没有得到正确的过滤谓词。我不知道这样做的语法。当然我不能使用n mod n,因为它只列出了所有元素1到n。

2 个答案:

答案 0 :(得分:4)

您想要检查每个mod n k == 0的{​​{1}}是否从1到kn是固定的(n的参数)和divisors变化,即应该是lambda表达式的参数

k

答案 1 :(得分:0)

我不知道你要做什么,但mod的类型是

mod :: Integral a => a -> a -> a

您可以使用Integral参数和整数参数列表来调用它。