Ответ 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