Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Haskell Probleme

Empfohlene Antworten

Veröffentlicht

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

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 von Ezra

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 von reyman040

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 von Ezra

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

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"]

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.