从列表中删除整数

时间:2017-04-09 03:07:51

标签: list function haskell

我正在尝试在Haskell中编写一个函数,它将获取一个整数列表,如果m是该列表的一个元素,它将打印没有m的列表,否则它将只打印列表。我写了

rmvFirst :: Int -> [Int] -> [Int]
rmvFirst m []                           = error "Empty"                     
rmvFirst m [x]       |    x == m        = error "Empty Set"
rmvFirst m (x:xs)    |    x == m        = (xs)
rmvFirst m (x:xs)    |    otherwise     = rmvFirst m (xs)

如果我输入3 [1..5],则输出[4..5]。但是,我想{1,2,4,5}。我使用的图书只定义了minmax

2 个答案:

答案 0 :(得分:3)

错误发生在最后一种情况。您需要确保列表前面的x(不等于m)是您返回的列表的一部分。

答案 1 :(得分:2)

正如@hugomg评论的那样,你的最后一个案例是错误的。

rmvFirst :: Int -> [Int] -> [Int]
rmvFirst m []                           = error "Empty"
rmvFirst m [x]       |    x == m        = error "Empty Set"
rmvFirst m (x:xs)    |    x == m        = (xs)
rmvFirst m (x:xs)    |    otherwise     = x : rmvFirst m (xs)