Я начал изучать Haskell и чувствую себя подавленным. Теперь я пытаюсь создать функцию, которая либо возвращает строку из стандартного ввода, либо из содержимого списка файлов. Другими словами, я пытаюсь воспроизвести поведение Unix-утилиты wc, которая принимает входные данные со стандартного ввода, когда файлы не указаны.
Я создал что-то вроде этого:
parseArgs [] = [getContents]
parseArgs fs = mapM readFile fs
Но она не компилируется, поскольку в одном случае у меня есть [IO String], а в другом IO [String]. Я не могу заставить это сопоставление с образцом возвращать IO [String] во всех случаях. Пожалуйста, укажите мне верное направление.