ich nach einer Probe Adressbuchs Programm in Haskell habe:Wie in Haskell Suche implementieren
menu = "1.Add address\n2.List addresses\n3.Exit"
main = do
prompt []
data Address=Address String String String
deriving Show
prompt :: [Address] -> IO()
prompt addrs= do
putStrLn menu
choice <- getLine
interpret addrs choice
interpret :: [Address]->String -> IO()
interpret addrs "1" = do
putStr "Names:"
names <- getLine
putStr "Phone:"
phone <- getLine
putStr "Email:"
email <- getLine
putStrLn "Address added"
prompt (addAddr(getAddr names phone email) addrs)
interpret addrs "2" = do
printAddrs addrs
prompt addrs
interpret addrs "3" = putStrLn "Good bye"
interpret _ _ = putStrLn "Don't know what to do with ya!"
getAddr ::String->String->String->Address
getAddr names phone email = Address names phone email
addAddr::Address->[Address]->[Address]
addAddr addr addrs = addr:addrs
printAddrs::[Address]->IO()
printAddrs addrs= putStrLn (fmtAddresses (tail addrs) (head addrs) "")
fmtAddresses::[Address]->Address->String->String
fmtAddresses addrs (Address names phone email) str
| (length addrs==0) = currStr
| (length addrs /=0) = fmtAddresses (tail addrs) (head addrs) currStr
where currStr = str++"Names:"++names++"Phone:"++phone++"Email:"++email++"\n"
Die aktuellen verfügbaren Funktionen sind nur hinzufügen und Druck Einträge. Wie kann ich dafür eine Suchfunktion implementieren? Lassen Sie uns sagen, wenn ich "Name" und "Ronaldo" in die Eingabeaufforderung einfüge, werden nur Einträge mit dem Namen Ronaldo angezeigt.
Übrigens, wo ist der Code oder Container, der die Daten (Namen, Telefon und E-Mail) enthält, wo ich Filter oder Elem-Funktion anwenden kann?
Danke.
Danke. Btw, ich bekomme den Fehler addressbook.hs: 36: 12: Fehler: Variable nicht im Geltungsbereich: isInfixOf ::() -> String -> Bool – pgtr3s
Lassen Sie mich das für Sie hoogle: https://www.haskell.org/hoogle /? hoogle = isInfixOf – fredefox
Verstanden. Zum Importieren von Data benötigt. Liste und Wort <- getLine ist derjenige, der für mich funktioniert – pgtr3s