Так что у меня есть что-то вроде:Извлечение значений из списка действий IO
[IO Blah, IO Blah, IO Blah]
и я действительно хочу просто список Blah
с, как я могу это сделать?
P.S .: Да, я работаю в функции ввода-вывода.
Так что у меня есть что-то вроде:Извлечение значений из списка действий IO
[IO Blah, IO Blah, IO Blah]
и я действительно хочу просто список Blah
с, как я могу это сделать?
P.S .: Да, я работаю в функции ввода-вывода.
Использование sequence
.
Оцените каждое действие в последовательности слева направо и соберите результаты.
do blahs <- sequence listOfIoBlah
-- now use blahs
Что вы хотите, это sequence :: Monad m => [m a] -> m [a]
. Он работает так, как вы ожидаете: все действия выполняются по порядку, результаты собираются и возвращаются. Обратите внимание, что ничего не возвращается, если не завершена вся команда.
Hoogle может быть очень полезным при ответе на эти рода вопросы, если вы знаете, как сформулировать вопрос, как тип, например: http://www.haskell.org/hoogle/?hoogle=%5BIO+a%5D+-%3E+IO+%5Ba%5D
спасибо, я забываю использовать что ! – drozzy