“效果”的类型签名缺少附带的绑定

时间:2015-05-24 12:38:26

标签: haskell

我无法绕过我的功能。它调用一个返回随机数的函数“drawSpecialCard”。现在,我已经阅读了这个错误,我知道它有一些未实现的问题,但我不知道该怎么做。对于Haskell来说,我不是很聪明。

import System.Random

drawSpecialCard :: IO Int
drawSpecialCard = randomRIO(1,16)

effect :: [Char]
effect = do
let cardNo = drawSpecialCard
 return $ case cardNo of
               1 -> "Pay"
               2 -> "ToJail"
               3 -> "Collect"
               4 -> "GoBack"    
               5 -> "moveOn"    

1 个答案:

答案 0 :(得分:1)

do块中,let定义但不运行IO操作。你想要像

这样的东西
effect :: IO [Char]
effect = do
  cardNo <- drawSpecialCard
  return $ case cardNo of
      ...

请注意,effect也必须返回IO