我有一个接受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]'
由于
答案 0 :(得分:6)
我认为最后一行必须是return (generateCode r)
。否则你的do
- 阻止会“突破”IO
monad,这是不可能的(好吧,如果没有使用我们不敢说出的名字功能)。