您好我想从列表中删除所有m的倍数(ex [2..100])
我的代码:
crossOut :: Int -> [Int] -> [Int]
crossOut n ns = [ x | x <- ns , x /= (n*x)]
答案 0 :(得分:7)
x /= (n*x)
测试x
是否为n
次本身,这是行不通的。请改为x `mod` n /= 0
。
答案 1 :(得分:3)
当您用英语阅读时,您的功能听起来像:&#34; ns中的任何x,其中x不等于x的n倍,对于某些输入n&#34;。除了n = 1,这将始终为真,因此不会删除任何元素。