【发布时间】:2021-04-15 02:06:28
【问题描述】:
我是 Haskell 的新手,我正在尝试弄清楚如何编写代码,该代码会删除所有零,直到列表中的元素 >0。
例如:
输入:[0,0,5,6,0]
输出:[5,6,0]
到目前为止,我已经写了这个:
zeroUntil :: [Int] -> [Int]
zeroUntil [] = []
zeroUntil (x:xs)
| x == 0 = drop x (xs)
| otherwise = zeroUntil xs
但不知何故,我得到了 [5,6,0],而不是 []。
谁能解释一下我做错了什么?
【问题讨论】:
-
您的实现与您的输出不匹配。在您描述的输入上运行时,它不会给出
[],而是给出[0,5,6,0]。当然,仍然是错误的:它实现的功能与您的预期完全不同。但是请通过粘贴您的实际代码和输出并在发布前仔细检查它们来确保您的问题是可重现的。
标签: list haskell recursion guard