#haskell #random
#haskell #Случайный
Вопрос:
У меня есть базовая функция, которая принимает значение Int и возвращает список:
generateCode rnd =
[sharpOrDot i rnd | i <- [0..24]]
Я вызываю это из своей основной функции следующим образом:
do
r <- (randomIO :: IO Int)
generateCode r
Не r <- (randomIO :: Int)
следует «распаковывать» Int
часть IO Int
и, следовательно, просто передавать Int в GenerateCode?
Возвращает ошибку
Couldn't match expected type `IO a0' with actual type `[Char]'
Спасибо
Комментарии:
1. Сигнатура типа неверна — так и должно быть
randomIO :: IO Int
.
Ответ №1:
Я думаю, что последняя строка должна быть return (generateCode r)
. Иначе ваш do
-block «вырвался бы» из IO
монады, что невозможно (ну, без использования функции с именем, которое мы не смеем озвучивать).