【发布时间】:2015-05-23 17:53:09
【问题描述】:
我这里有一些简单的haskell 代码掷两个骰子并总结它们的值。我想利用这个价值在垄断板上采取行动。我决定为此使用递归函数,并为第一步使用另一个函数。问题是我声明递归函数采用 IO Int 类型参数并返回相同类型的结果。我该如何解决这个问题。 注意:我是 Haskell 的新手。
import System.Random
firstMove :: IO Int
firstMove = do
start <- randomRIO (0, 0)
current <- sumOfTwoDices
return (start + current)
makeAmove :: IO Int -> IO Int
makeAmove firstMove = firstMove
makeAmove pos = do
step <- sumOfTwoDices
return (pos + step)
rollDice :: IO Int
rollDice = randomRIO (1, 6)
sumOfTwoDices :: IO Int
sumOfTwoDices = do
dice1 <- rollDice
dice2 <- rollDice
return (dice1 + dice2)
即使我指定它接收 IO Int 类型,它也将 pos 视为 Int。帮助表示赞赏
【问题讨论】:
-
这是整个代码
标签: haskell