Как создать функцию Haskell, которая превращает строку ввода-вывода в строку ввода-вывода

Я начал изучать Haskell и чувствую себя подавленным. Теперь я пытаюсь создать функцию, которая либо возвращает строку из стандартного ввода, либо из содержимого списка файлов. Другими словами, я пытаюсь воспроизвести поведение Unix-утилиты wc, которая принимает входные данные со стандартного ввода, когда файлы не указаны.

Я создал что-то вроде этого:

parseArgs [] = [getContents]
parseArgs fs = mapM readFile fs

Но она не компилируется, поскольку в одном случае у меня есть [IO String], а в другом IO [String]. Я не могу заставить это сопоставление с образцом возвращать IO [String] во всех случаях. Пожалуйста, укажите мне верное направление.

7
задан Don Stewart 24 April 2011 в 16:29
поделиться