Может быть, я не совсем понимаю ваш вопрос, но вот как я его получил:
Функция interact
передает ввод из stdin
в вашу программу и выводит результат в stdout
,Используя lines
и unlines
, вы получаете входные и выходные данные, разделенные на строки, поэтому вы можете работать с этим слоем.Ваша функция io
теперь больше ничего не делает, затем помещает функцию f
в эту структуру.
Далее sortBy compare
- это не что иное, как sort
.Таким образом, вы в основном конвертируете строки в числа и сортируете их таким образом.Результатом является список номеров.Возможно, вы заметили, что ваша программа не может проверить тип в этой точке, так как unlines
ожидает [String]
, а не [Int]
для ввода.Измените вашу функцию на map show $ sort (read :: String -> Int)
, чтобы исправить это.Я бы на самом деле написал map show $ sort (asTypeOf 0 . read) instead, making it an
Integer instead of an
Int` и был бы более читабельным.