Ich versuche ein einfaches Problem auf HackerRank zu lösen und erhalte den Fehler im Titel. Ich bin ein Haskell-Noob, so nackt mit mir. Das Problem besteht darin, eine Zeichenfolge aufzunehmen und sie zu reduzieren, indem benachbarte Buchstabenpaare entfernt werden. Also "aabcdd" => "bc" zum Beispiel. Hier ist mein Code:Haskell-String-Manipulation. Nicht erschöpfende Muster im Funktionsfehler.
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
Ich bin verwirrt, weil ich denke, ich habe die Randfälle abgedeckt. Ich möchte keine Antwort auf das Problem, ich möchte nur wissen, warum ich den Fehler bekomme. Vielen Dank!
Es ist eine Weile her, seit ich Haskell geschrieben habe, aber der letzte Fall wird nur genau 3 Zeichen entsprechen. Wenn die Zeichenfolge 1 oder 2 Elemente enthält, wird sie nicht übereinstimmen. – Carcigenicate
@Carcigenicate: keine zwei Elemente 'xs' ist das Ende der Liste. –
@ WillemVanOnsem Oh richtig. Also nur 1 Element. – Carcigenicate