0
我一直在關注在Haskell樣本地址簿程序:如何實現搜索在Haskell
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"
當前可用的功能只是添加和打印條目。我如何實現這個搜索功能?假設我在提示中輸入「name」和「ronaldo」,它將只顯示名爲ronaldo的條目。
順便說一句,哪裏是代碼或容器,其中包含數據(名稱,電話和電子郵件),我可以應用過濾器或elem函數?
謝謝。
謝謝。順便說一句,我得到的錯誤addressbook.hs:36:12:錯誤: 變量不在範圍內:isInfixOf ::() - >字符串 - > Bool – pgtr3s
讓我爲你鎬這:https://www.haskell.org/hoogle /?hoogle = isInfixOf – fredefox
明白了。需要導入Data.List和單詞< - getLine是我的作品 – pgtr3s