Haskell 没有由文字'1';如果
考虑下一段代码-Haskell 没有由文字'1';如果,haskell,Haskell,考虑下一段代码- pvp :: Board -> Int -> IO () pvp board player = do playerchoice <- prompt $ ("Player " ++ (show (player + 1)) ++ ", it's your turn:") let newboard = if player == 0 then put board X (read playerchoice)
pvp :: Board -> Int -> IO ()
pvp board player = do
playerchoice <- prompt $ ("Player " ++ (show (player + 1)) ++ ", it's your turn:")
let newboard = if player == 0
then put board X (read playerchoice)
else put board O (read playerchoice)
case newboard of
Nothing -> do
putStrLn "Invalid move."
pvp board player
Just board' -> putStrLn "Valid move."
这就是我所说的pvp-
main = do
playGame emptyBoard
where
playGame board = do
game_choise <- prompt "Choose game type: (1) PvC (2) PvP"
if game_choise == 1
then putStrLn "1"
else pvp board 0
main=do
游戏空板
哪里
玩游戏板
游戏选择我最可能的解决方法(猜测)是
main = do
playGame emptyBoard
where
playGame board = do
game_choise <- prompt "Choose game type: (1) PvC (2) PvP"
if read game_choise == (1 :: Int)
then putStrLn "1"
else pvp board 0
main=do
游戏空板
哪里
玩游戏板
游戏选择正如我在对my的评论中提到的-您需要包括放置
、提示
和板
的定义,以提供一些上下文。您查看的代码部分不正确。错误消息与您包含的代码不匹配。或者如果game_choise==“1”
,我猜这会“更安全”,另一方面,它可能会导致意外的运行时行为-因为我不知道prompt是否返回包含换行符的字符串。我会做一些类似于case readMay gameChoice of Just(1::Int)->
。
main = do
playGame emptyBoard
where
playGame board = do
game_choise <- prompt "Choose game type: (1) PvC (2) PvP"
if read game_choise == (1 :: Int)
then putStrLn "1"
else pvp board 0