Haskell:接受随机Int的函数

时间:2011-10-27 09:49:36

标签: haskell random

我有一个接受Int并返回列表的基本函数:

generateCode rnd = 
  [sharpOrDot i rnd  | i <- [0..24]]

我从我的主要功能中调用它:

do
  r  <- (randomIO :: IO Int)
  generateCode r

不应r <- (randomIO :: Int)“从Int解包”IO Int部分,因此只需将Int传递给generateCode吗?

它返回错误

Couldn't match expected type `IO a0' with actual type `[Char]'

由于

1 个答案:

答案 0 :(得分:6)

我认为最后一行必须是return (generateCode r)。否则你的do - 阻止会“突破”IO monad,这是不可能的(好吧,如果没有使用我们不敢说出的名字功能)。