Haskell: получение ценности из RVar в Data.Random

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

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

в терминах

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

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

Ответ 1

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

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