Haskell: получение значения из RVar в Data.Random - PullRequest
10 голосов
/ 26 января 2012

Как написать функцию с сигнатурой типа, например:

mySample :: StdGen -> Int -> [a] -> [a]

в терминах

sample :: Int -> [a] -> RVar [a]

, где выборка определена в Data.Random.Extras ?Здесь sample - это функция, которая возвращает случайный подсписок из заданного списка.

1 Ответ

8 голосов
/ 26 января 2012

Согласно документации , это должно работать:

mySample :: StdGen -> Int -> [a] -> [a]
mySample g n xs = fst $ sampleState (sample n xs) g

Тем не менее, я получаю перекрывающиеся ошибки экземпляра при попытке его скомпилировать. Я получил это для компиляции, хотя:

mySample :: StdGen -> Int -> [a] -> [a]
mySample g n xs = evalState (runRVar (sample n xs) StdRandom) g
...