多行if语句Haskell

时间:2014-12-15 15:31:48

标签: haskell if-statement

我在Haskell中编写一个简单的程序,并具有以下功能:

tryMove board player die = do
  let moves = getMoves board player die
  putStrLn ("Possible columns to move: " ++ (show $ moves))

  if not $ null moves then
    let col = getOkInput $ moves
    putStrLn " "
    return $ step board (getMarker player) col firstDie
  else
    putStrLn ("No possible move using "++(show die)++"!")
    return board

它需要一个棋盘,如果玩家可以根据掷骰子进行移动,则返回新棋盘,否则返回旧棋盘。

然而,haskell不允许我在if语句中使用多行。是否可以使用某种限制器,以便我可以在if中使用let之类的东西?

1 个答案:

答案 0 :(得分:12)

您需要在每个do / then分支上重复else个关键字。

whatever = do
  step1
  step2
  if foo
    then do
      thing1
      thing2
      thing3
    else do
      thing5
      thing6
      thing7
      thing8