我想将Gen (Maybe Int)
转换为Maybe Int
。我有一个函数,生成1到9之间的随机Just Int。我想使用单元格函数但我不能更改其类型签名中的任何内容。有什么建议吗?
cell :: Gen (Maybe Int)
cell = frequency
[(9, return Nothing),
(1, do n <- choose (1,9)
return (Just n))]
答案 0 :(得分:3)
以下是一些方法
> sample' cell
[Nothing,Just 5,Nothing,Nothing,Just 7,Nothing,Nothing,Nothing,Nothing,Just 6,Nothing]
它将生成随机cell
的列表。如果您只想获得一个元素,可以调用head。
您可以将unGen
用作
main = do
s <- newStdGen
print $ unGen cell s 100 -- 100 is arbitrary
答案 1 :(得分:2)
您可以使用unGen :: Gen a -> StdGen -> Int -> a
功能。它需要一个标准的随机数生成器(在System.Random
中查找获取方法)和一个大小参数(我认为在这种情况下会被忽略)。