List 从列表中删除整数

List 从列表中删除整数,list,function,haskell,List,Function,Haskell,我正在尝试用Haskell编写一个函数,它将获取一个整数列表,如果m是该列表的一个元素,它将在不打印m的情况下打印该列表,否则它将只打印该列表。我写过 rmvFirst :: Int -> [Int] -> [Int] rmvFirst m [] = error "Empty" rmvFirst m [x] | x == m = error "Empty Se

我正在尝试用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}。我正在使用的书只定义了
min
max

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

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

正如@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)

正如@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)

用什么语言?为什么空输入或空结果是错误?这太令人惊讶了!另外,如果列表中有多个
m
副本,您希望发生什么?@dfeuer在某些上下文中,空输入错误可能是有意义的。也就是说,您希望确保您的函数确实删除了一个元素——如果它没有删除,那么其他地方就有一个bug,所以我们现在可能要报告它。另一方面,空输出上的错误真的很奇怪,我找不到任何理由来证明这个选择。@dfeuer@chi我只是想在同一个函数中混合不同类型的情况。我的选择是任意的。如果有多个
m
我只希望删除第一个实例。使用哪种语言?为什么空输入或空结果是错误?这太令人惊讶了!另外,如果列表中有多个
m
副本,您希望发生什么?@dfeuer在某些上下文中,空输入错误可能是有意义的。也就是说,您希望确保您的函数确实删除了一个元素——如果它没有删除,那么其他地方就有一个bug,所以我们现在可能要报告它。另一方面,空输出上的错误真的很奇怪,我找不到任何理由来证明这个选择。@dfeuer@chi我只是想在同一个函数中混合不同类型的情况。我的选择是任意的。如果有多个
m
我只希望删除第一个实例。我知道这就是问题所在。这句话的语法是什么?我知道这就是问题所在。它的语法是什么?