reyman040 Geschrieben 27. Januar 2011 Geschrieben 27. Januar 2011 Hallo User, ich programmiere etwas in Haskell und habe folgendes problem. Das ist meine Funktion: give [] = "Hallo" give (x:[]) = "Wie" give (x:xs) = x:xs einzelt funktionieren die funktionen, aber wie füge ich die so zusammen, dass es auch funktioniert wenn die Funktionen in einem Programm zusammen stehen? Ich hoffe ihr habt mich verstanden! Bei Fragen gerne fragen^^ Mfg reyman Zitieren
Ezra Geschrieben 28. Januar 2011 Geschrieben 28. Januar 2011 (bearbeitet) Was meinst Du mit Funktionen? Ich sehe nur eine Funktion (give), mal abgesehen von dem vordefinierten cons. Was genau funktioniert dabei nicht? Edit: Ich habe es mal ausprobiert und es funktioniert genau so wie es da steht: Main> give [] "Hallo" *Main> give "A" "Wie" *Main> give "AA" "AA" Ich sehe jetzt das Problem nicht. Bearbeitet 28. Januar 2011 von Ezra Zitieren
reyman040 Geschrieben 28. Januar 2011 Autor Geschrieben 28. Januar 2011 (bearbeitet) Okai ich versuche es etwas besser zu erklären. Ich suche eine Funktion, die: 1.Wenn eine Liste leer ist, soll "Hallo" ausgegeben werden 2.Wenn eine Liste nur einen Kopf hat soll "Wie" ausgegeben werden 3.Wenn eine Liste einen Kopf und einen Rest hat, soll der Inhalt der Liste unverändert wiedergegeben werden Das oben waren meine Ansätze mich dieser Funktion zu nähren. Ich hoffe du hast jetzt verstanden was ich machen möchte. Danke im vorraus mfg reyman P.s Das "Hallo" oder "Wie" ist egal, es soll einfach nur ein vordefinierter Satz ausgegeben werden Bearbeitet 28. Januar 2011 von reyman040 Zitieren
Ezra Geschrieben 28. Januar 2011 Geschrieben 28. Januar 2011 (bearbeitet) Und genau das macht die Funktion, wie ich es eben demonstriert habe. Ich weiß nicht, wo es bei Dir hängt. Willst Du es schlicht anders schreiben? Ich meine, das geht, aber es macht überhaupt keinen Unterschied der Funktionalität gegenüber: give s = case s of [] -> "Hallo" (x:[]) -> "Wie" (x:xs) -> x:xs Bearbeitet 28. Januar 2011 von Ezra Zitieren
reyman040 Geschrieben 28. Januar 2011 Autor Geschrieben 28. Januar 2011 Ja, aber die Funktion funktioniert nur bei eingaben wie z.b ("h") oder ("hh") Jedoch soll die Funktion so funktionieren: Bei einer eingabe wie z.b: 1. [] soll "Hallo" ausgegeben werden 2. ("hallo") soll "wie" ausgegeben werden 3. ("hallo","wie","geht") soll der Inhalt der Liste wieder gegeben werden mache str = (give(words str)) give [] = "wie" give (x:[]) = "hallo so funktionier die Funktion halbwegs, und der Kopf kann auch ein ganzes Wort sein, wenn ich jedoch noch (x:xs)= x:xs einbaue gibt es einen ERROR, also bei einer eingabe von mehreren Wörtern Zitieren
Ezra Geschrieben 28. Januar 2011 Geschrieben 28. Januar 2011 Dass das eine Liste aus Strings sein soll (und nicht etwa eine Liste aus Chars) , musst Du schon dazu sagen. Kann doch keiner hellsehen. give :: [[Char]] -> [Char] give s = case s of [] -> "Hallo" x:[] -> "Wie" x:xs -> foldr (++) "" (x:xs) Die Eingabe darfst Du allerdings nicht plötzlich als Tupel machen. Das hier geht beispielsweise mit: give ["Hallo", "Test", "OK"] Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.