Рассмотрим следующий код, который должен распечатать случайные числа:
import System.Random.Mersenne
main =
do g <- (newMTGen Nothing)
xs <- (randoms g) :: IO [Double]
mapM_ print xs
При запуске я получаю ошибку сегментации. Это неудивительно, поскольку функция randoms создает бесконечный список. Предположим, я хочу вывести только первые десять значений xs. Как я мог это сделать? xs имеет тип IO [Double], и я думаю, что мне нужна переменная типа [IO Double]. Какие операторы существуют для преобразования между ними.