【问题标题】:Random number function随机数功能
【发布时间】:2013-11-14 20:56:11
【问题描述】:

我正在尝试获取一个生成随机数的函数,这就是我目前所拥有的:

getRandom :: Int -> Int -> Int
getRandom x y = do
    z <- randomRIO( x, y )

这段代码给我以下错误:

The last statement in a 'do' block must be an expression

现在我明白了这个错误,但我不明白解决方案。

我试过了:

return z

但它不起作用。

附:我对 Haskell 非常陌生

【问题讨论】:

    标签: haskell


    【解决方案1】:

    do 块不能以绑定结尾。他们脱糖到类似的东西

    getRandom = randomRIO (x, y) >>= \z ->
    

    这显然是一个错误!如果你只想使用randomRIO的结果

    getRandom x y = randomRIO (x, y)
    

    工作正常。另外,如果你只想要一个随机数,

    getRandom :: IO Integer
    getRandom = randomIO
    

    有效。

    【讨论】:

    • 我试过了,但我遇到了错误:无法将预期类型 'Int' 与实际类型 'IO Int' 匹配
    • @nevero getRandom 返回一个IO Int,因为在 IO monad 中留下了不纯的操作。我推荐阅读真实世界haskell的“IO”章节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2015-04-01
    • 2017-04-08
    相关资源
    最近更新 更多