emc*_*sen 10 random monads haskell
如何编写具有类型签名的函数,如:
mySample :: StdGen -> Int -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
就......而言
sample :: Int -> [a] -> RVar [a]
Run Code Online (Sandbox Code Playgroud)
哪个样本在Data.Random.Extras中定义?这里,sample是一个从给定列表返回随机子列表的函数.
根据文档,这应该工作:
mySample :: StdGen -> Int -> [a] -> [a]
mySample g n xs = fst $ sampleState (sample n xs) g
Run Code Online (Sandbox Code Playgroud)
但是,在尝试编译时会出现重叠的实例错误.我得到了这个编译,但:
mySample :: StdGen -> Int -> [a] -> [a]
mySample g n xs = evalState (runRVar (sample n xs) StdRandom) g
Run Code Online (Sandbox Code Playgroud)