Gepostet: |
Matching-Problem Char | ||||||||||
Hallo, ich bekomme bei folgender Funktion einen Fehler, weiß aber nicht was an der Funktion verändert werden soll. Hat jemand eine Idee? Das Problem ist offensichtlich bei dem x. Das x ist ein Char, trotzdem sagt Haskell, dass es ein [Char] ist ? Wie kommt das? Vielen Dank im Voraus >jaba :: [Char] -> [Char] -> [[Char]] -> [[Char]] >jaba [] xs ys = (reverse xs ) : ys >jaba (x:hs) xs ys |x==' ' = jaba hs [] ((reverse xs):ys) > |x=='\t' =jaba hs [] ((reverse xs): ys) > |x == '\n' = jaba hs [] ((reverse xs): ys) > |otherwise = x : xs assignment5.lhs:51:55: Couldn't match expected type `[Char]' with actual type `Char' In the first argument of `(:)', namely x In the expression: x : xs In an equation for `jaba': jaba (x : hs) xs ys | x == ' ' = jaba hs [] ((reverse xs) : ys) | x == '\t' = jaba hs [] ((reverse xs) : ys) | x == '\n' = jaba hs [] ((reverse xs) : ys) | otherwise = x : xs |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Das Problem liegt bei otherwise = x : xs. Wie du schon erkannt hast, hat x den Typ Char, und xs hat den Typ [Char], damit hat auch x:xs den Typ [Char], als Ergebnis wird aber ein [[Char]] erwartet. Ich weiß nun nicht genau, was du vorhast, aber otherwise = [x : xs] sollte zumindest compilieren, wenn ich richtig liege (kann es gerade nicht ausprobieren). Nebenbei bemerkt kannst du die drei vorherigen Fälle mit x `elem` " \t\n" zusammenfassen | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Danke Landei, hat geklappt. | |||||||||||
Zum Seitenanfang | |||||||||||