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