Haskell函数不起作用,我做错了什么?

时间:2014-09-15 14:14:59

标签: haskell

您好我想从列表中删除所有m的倍数(ex [2..100])

我的代码:

crossOut :: Int -> [Int] -> [Int]
crossOut n ns = [ x | x <- ns , x /= (n*x)]

2 个答案:

答案 0 :(得分:7)

x /= (n*x)测试x是否为n次本身,这是行不通的。请改为x `mod` n /= 0

答案 1 :(得分:3)

当您用英语阅读时,您的功能听起来像:&#34; ns中的任何x,其中x不等于x的n倍,对于某些输入n&#34;。除了n = 1,这将始终为真,因此不会删除任何元素。