【发布时间】:2017-04-09 03:07:50
【问题描述】:
我正在尝试在 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。
【问题讨论】:
-
用什么语言?
-
为什么空输入或空结果是错误?这太令人惊讶了!另外,如果列表中有多个
m副本,您希望发生什么? -
@dfeuer 在某些情况下出现空输入错误可能是有意义的。即,您想确保您的函数确实删除了一个元素——如果没有,则说明其他地方存在错误,因此我们现在可能要报告该问题。另一方面,空输出的错误真的很奇怪,我找不到该选择的任何理由。
-
@dfeuer @chi 我只是想获得在同一功能中混合不同类型案例的经验。我的选择是任意的。如果有多个
m我只想删除第一个实例。