我无法弄清楚如何生成随机数。
以下是我根据this尝试做的事情:
main :: IO ()
main = do
let
g <- getStdGen
bla = randomRs (0, 360) g
也尝试过:
main :: IO ()
main = do
let
r <- randomIO
然后:
输入`&lt; - '时解析错误 也许这句话应该在'do'区块内?
答案 0 :(得分:6)
我强烈推荐许多优秀的免费Haskell教程之一,例如Learn You A Haskell或Real World Haskell。
您可以找到有关do
表示法here的更多信息。
要专门回答您的问题,您将let
关键字误用do
符号。基本规则是:如果答案是monad,则应使用<-
而不使用let
。如果值不在monad中,请写let bla = ...
。您可以连续编写多个此类语句,而不会复制let
关键字:
do
x <- y :: m a
let z = z1
z' = z2
...
w <- w' :: m b
z <- z' :: m c
...
您的代码应该更像:
main :: IO ()
main = do
g <- getStdGen
let bla = randomRs (0,360) g
更好的选择是使用MonadRandom
来完全隐藏生成器(状态):
include Control.Monad.Random
main :: IO ()
main = do
bla <- getRandomR (0,360)