Записать в несколько файлов в Haskell
В Haskell, как можно было бы записывать в произвольно большое количество файлов?
В качестве примера, скажем, я хочу взять буквы a
через z
и поместите их в файлы, названные по букве их содержимого. Первоначальной попыткой было сделать следующее:
main :: IO ()
main = do
let letter = map (:"") ['a'..'z']
zipWith writeFile letter letter
который произвел следующую ошибку:
Не удалось сопоставить ожидаемый тип 'IO ()' с фактическим типом '[IO ()]'
Я чувствую, что должен быть способ перебрать список в блоке do, но я пока не смог его найти.
1 ответ
Решение
Вам нужна функция zipWithM.
Число рейнольдса way to loop through a list in a do block
Для этого есть функция - последовательность, так что вы можете написать sequence $ zipWith writeFile letter letter
,