Hey, ich bin gerade dabei, mit Haskell zu beginnen und ich versuche ein Programm zu schreiben, das ein Eingabewort durch Lesen einer TXT-Datei mit einigen Übersetzungen übersetzt . Davor habe ich ein Programm geschrieben, mit dem ein Benutzer Übersetzungen erstellen kann.Haskell, versucht ein Eingabewort aus einem gegebenen Wörterbuch zu übersetzen
import System.IO
main :: IO()
main = do
putStrLn "Type in an english word"
d <- getLine
if null d
then return()
else do
putStrLn "Type in a german translation"
b <- getLine
putStrLn (d ++ " means in german " ++ b)
appendFile "woerterbuch.txt" (", " ++ d ++ " " ++ b)
main
So, jetzt habe ich die Datei woerterbuch.txt bekam, in dem ich die Englisch und Deutsch Wörter wie diese aufgelistet haben: Hello Hallo, Haus Haus, ect. Was ich versuche jetzt zu tun ist, diese Worte in Tupeln zu bekommen, damit ich das zweite (Deutsch) Wort, wenn der Benutzer tippt in einem Englisch Wort drucken.
import System.IO
main :: IO()
main = do
putStrLn "Type in an english word"
d <- getLine
[contents] <- readFile "woerterbuch.txt"
if d `elem` [contents]
then do
print contents
else do
putStrLn "There's no translation available!"
Dies ist, was ich mit nach mehreren Versuchen habe kommen, ich verstehe, dass elem
für Listen ist, so brauche ich eine Alternative für meine .txt-Datei und dann versuchen, das zweite Wort des Tupels lösche mit der snd
Befehl. Also erstens, wie kann ich die Eingabe der Übersetzungen als Tupel erstellen und zweitens, wie kann ich testen, ob das gewünschte Wort in dieser Liste ist und dann das zweite Element des Tupels ausdrucken, zu dem es gehört? Jede Hilfe würde sehr geschätzt werden.
Danke, aber ich bekomme die Ausnahme, dass der Index zu groß ist, wenn ich versuche, ein Wort zu übersetzen. "*** Ausnahme: Prelude. !!: index too large" Ich habe Ihren Code wahrscheinlich nicht richtig implementiert, an welcher Stelle sollte ich ihn setzen? und gibt es vielleicht einen Weg, es mit Tupeln zu tun, also brauche ich nicht die !! Index? –
Oh, es liest eine Zeile, die kein Tupel enthält (vielleicht die Endzeile). Ich werde aktualisieren. –
@ J.Tmr Siehe Aktualisierung. –