List 从列表中删除整数
我正在尝试用Haskell编写一个函数,它将获取一个整数列表,如果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
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
我只希望删除第一个实例。我知道这就是问题所在。这句话的语法是什么?我知道这就是问题所在。它的语法是什么?