我试图通过递归来获得素数,我知道如何用列表来实现。
在函数绑定中输入错误
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]
答案 0 :(得分:5)
xs `mod` x
你不能mod
一个带整数的列表。
你可能意味着
where p y = y `mod` x > 0
注意我还必须将参数更改为y
,这样它就不会从前一行的模式中隐藏x
。
此外,filter p [xs]
应为filter p xs
。