我试图来解决HackerRank一个简单的问题,并在标题我收到错误。我是一个Haskell noob,与我一起裸露。该问题要求采取一个字符串,并通过删除相邻的字母来减少字符串。例如“aabcdd”=>“bc”。这里是我的代码:Haskell字符串操作。功能错误中的非穷举模式。
main :: IO()
main = do
line <- getLine
putStrLn (reduce' line)
reduce' :: String -> String
reduce' [] = []
reduce' (x0:x1:xs)
| x1:xs == [] = [x0]
| x0 == x1 = reduce' xs
| otherwise = x0 : x1 : reduce' xs
我很困惑,因为我想我已经覆盖的边缘情况。我不想要问题的答案,我只想知道为什么我会收到错误。谢谢!
它已经一段时间,因为我写的哈斯克尔,但IIRC,你最后的情况下,将只匹配正好3个字符。如果字符串有1或2个元素,它将不匹配。 – Carcigenicate
@Carcigenicate:没有两个元素'xs'是列表的尾部。 –
@WillemVanOnsem哦对。所以只有1个元素。 – Carcigenicate