Er Jungs, ich habe ein Problem. Ich habe zwei Funktionen in meinem Haskell-Programm.Haskell: Arbeiten mit Fehlern/Ausnahmen in Haskell
type Env = String -> Int
emptyEnv :: Env
emptyEnv _ = error "Failed"
insertEnv :: String -> Loc -> Env -> Env
insertEnv s loc env = case env s of
(error "Failed") -> (\inp -> (if inp==s then loc else env s))
_ -> env
Also mein leerEnv sollte immer eine Fehlermeldung geben. Mit der anderen Funktion insertEnv können Sie Elemente in Env einfügen. Sie müssen daher überprüfen, ob Env leer ist und auf dem Bildschirm wird ein Fehler angezeigt. Nun meine Frage: Der obige Code funktioniert nicht, weil der Fehler "Failed" kein Fall von env s in der Funktion insertEnv ist. Hast du eine Idee, wie ich den Fehler richtig behandle, damit du Elemente in env einfügen kannst?
Dank Adamse. Schnell außerhalb des Themas. Jetzt habe ich es einfach mit 'emptyEnv = \ _-> (- 1)' und 'insert s loc env = \ inp -> (wenn inp == s dann loc else env s)' aber jetzt, wenn ich das 'env = füge "x" ein 42 (füge "y" ein 17 emptyEnv) 'und dann' env "y" 'es gibt mir -1 so das vale eines leeren Env. Was ist da los? Es hat vor 5 Minuten funktioniert !? –
Sie möchten '... sonst env inp'. – adamse