Problemsituation
Begrüßung auf einer Webseite
Es soll eine Funktion geschrieben werden, die eine Begrüßung zurückgibt. Die Begrüßung hängt davon ab, ob der Benutzer auf der Webseite angemeldet ist oder nicht und folgendermaßen zu benutzen sein:
> begruessen "Angemeldet"
"Willkommen" : String
> begruessen "Abgemeldet"
"Zum Anmelden oben klicken" : String
Hier findest du ein paar Vorschläge für mögliche Implementierungen:
-- 1. Vorschlag
begruessen : String -> String
begruessen status =
if status == "Abgemeldet" then
"Zum Anmelden oben klicken"
else
"Willkommen"
-- 2. Vorschlag
begruessen : String -> String
begruessen status =
if status == "Abgemeldet" then
"Zum Anmelden oben klicken"
else if status == "Angemeldet" then
"Willkommen"
else
"Fehler"
-- 3. Vorschlag
begruessen : String -> String
begruessen status =
case status of
"Abgemeldet" ->
"Zum Anmelden oben klicken"
"Angemeldet" ->
"Willkommen"
_ ->
"Fehler"
Aufgabe 1
Untersuche und bewerte die Implementierungen. Teste bei Bedarf in der REPL z.B. mit
begruessen "Abgemeldet"
, begruessen "abgemeldet"
oder begruessen "Agnemeldet"
, .
Verbesserte Variante mit Benutzernamen
Eine mögliche Variante, um die Funktionen oben zu verbessern, besteht darin, für den Status nur Wahrheitswerte zuzulassen:
begruessen : Bool -> String
begruessen abgemeldet =
if abgemeldet then
"Zum Anmelden oben klicken"
else
"Willkommen "
Zusätzlich zum Status, ob man ab- oder angemeldet ist, soll noch ein Benutzername übergeben werden, der angezeigt wird, falls man angemeldet ist. Falls man abgemeldet ist, existiert natürlich kein sinnvoller Benutzername. Die Funktion kann folgendermaßen erweitert werden:
begruessen : Bool -> String -> String
begruessen abgemeldet name =
if abgemeldet then
"Zum Anmelden oben klicken"
else
"Willkommen " ++ name
Aufgabe 2
Untersuche und bewerte die Implementierung.