这可能是一个愚蠢的问题,但是当我尝试在main
函数之外获取输入时,我遇到了错误:
menu2Players :: String -> String -> (String, String)
menu2Players player1 player2 = do
putStrLn("Qual o nome do primeiro jogador?n")
player1 <- getLine
putStrLn("Qual o nome do segundo jogador?n")
player2 <- getLine
return (player1, player2)
我得到的错误
IO 操作"main">未在模块"main"中定义
我该怎么做才能解决这个问题?
在 Haskell 中,如果你想在一个函数中做 IO,它需要返回IO
。
menu2Players :: String -> String -> IO (String, String)
menu2Players player1 player2 = do
putStrLn "Qual o nome do primeiro jogador?n"
player1 <- getLine
putStrLn "Qual o nome do segundo jogador?n"
player2 <- getLine
return (player1, player2)
为什么您需要返回IO
的详细信息有点棘手,但您可以在此处了解:http://learnyouahaskell.com/input-and-output
(有点晚了,但是...有效的代码,我只是需要IO返回。
menu2Players = do
putStrLn "Qual o nome do primeiro jogador?n"
player1 <- getLine
putStrLn "Qual o nome do segundo jogador?n"
player2 <- getLine
return (player1, player2)