函数绑定中的类型错误

时间:2012-10-31 14:11:29

标签: function haskell recursion primes

我试图通过递归来获得素数,我知道如何用列表来实现。

在函数绑定中输入错误

primes :: [Int]   
primes = sieve [2..10]   
sieve[] = []   
sieve(x:xs) = x : sieve (filter p [xs])    
   where p x = xs `mod` x > 0

我也尝试过使用map并在应用程序中出现类型错误

primes :: [Int]   
primes = sieve [2..10]   
sieve[] = []   
sieve(x:xs) = x : sieve (map (`mod` x > 0) [xs])

我正在努力实现与列表

类似的功能
sieve (a:x) = a:sieve [y| y<-x, y`mod`a > 0]

1 个答案:

答案 0 :(得分:5)

xs `mod` x

你不能mod一个带整数的列表。

你可能意味着

where p y = y `mod` x > 0

注意我还必须将参数更改为y,这样它就不会从前一行的模式中隐藏x

此外,filter p [xs]应为filter p xs