【发布时间】:2020-11-24 01:45:24
【问题描述】:
我是 Haskell 初学者,我正在为一个项目做一个小文件,该项目应该为两个人的小组输入交互数据,并将其保存到一个列表中以在最后输出。我已尽力实现这一点,但无论输入什么,程序似乎都会遇到“停止”情况。任何帮助或建议将不胜感激。
import Data.List
import Text.Read
main :: IO ()
main = do
putStrLn "This program is a means to record interactions between individuals during the COVID-19 pandemic."
putStrLn "Please enter your interactions in this format: 'x interacted with y'"
inputs <- getUserInputs
putStr "input: "
putStrLn ("list sequence " ++ show (inputs))
parseInput :: String -> Maybe String
parseInput input = if input == "stop" then Nothing else (readMaybe input):: Maybe String
getUserInputs :: IO [String]
getUserInputs = do
input <- getLine
case parseInput input of
Nothing -> return []
Just aString -> do
moreinputs <- getUserInputs
return (aString : moreinputs)
【问题讨论】:
-
readMaybe 只对带引号的字符串成功,所以如果你输入
"a"它将起作用,但不是a。您可能想删除 readMaybe 并简单地使用... else Just input。
标签: list loops haskell input io