3

乱数を生成する関数を取得しようとしていますが、これは私がこれまでに持っているものです:

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

しかし、うまくいきません。

PS私はHaskellに非常に慣れていません

4

1 に答える 1

5

doブロックはバインディングで終了できません。彼らは次のようなものに脱糖します

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

これは明らかにエラーです。の結果だけを使用したい場合randomRIO

getRandom x y = randomRIO (x, y)

正常に動作します。さらに、乱数だけが必要な場合は、

getRandom :: IO Integer
getRandom = randomIO

動作します。

于 2013-11-14T21:01:38.000 に答える