www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

Dogge

Gepostet:
27.05.2013 21:37

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    
 
Landei

Gepostet:
28.05.2013 12:57

   
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    
 
Dogge

Gepostet:
28.05.2013 22:00

   
Danke Landei, hat geklappt.
Zum Seitenanfang