我是哈斯克爾的新手,我一直試圖弄清楚這個問題一段時間了。我想使用randomRIO生成一個隨機大小的列表,並使用randomIO將該列表填充爲隨機數。我試圖通過創建一個函數,該函數在隨機randomRIO產生像這樣來解決這個問題:如何在Haskell中隨機生成一個隨機生成的數字列表
x <- randomRIO(1,5)
let y = randList x []
本身的功能是這樣的:
randList :: Int -> IO [Int] -> IO [Int]
randList 0 xs = return [xs]
randList g xs = do
t <- randomIO
let a = t:randList (g-1) xs
return [a]
我不知道怎麼樣在遞歸函數中處理monad IO,但這就是我想到的。任何幫助表示感謝,謝謝!
注意,它在Haskell極力迴避擺在'IO'這樣的事情。最好接受一個明確的「RandomGen」參數(或者使用專門的monad來做這件事)。 – leftaroundabout