Я пробираюсь через Learn You a Haskell к большому благу.В настоящее время я нахожусь в разделе файлов и потоков главы 9. По какой-то причине, когда я пытаюсь передать код в одну из примеров программ на Haskell, я не получаю тот же вывод, что и книга.Использование команд ConEmu для Linux в Windows.Например, у меня есть программа, которая печатает только строки длиной менее 10 символов с кодом ниже (short_lines.hs):
main = interact $ unlines . filter ((<10) . length) . lines
Я собираюсь передать этот файл (short_long.txt):
i'm short
so am i
i am a loooooooooong line!!!
yeah i'm long so what hahahaha!!!!!!
short line
loooooooooooooooooooooooooooong
short
Вот команда:
cat short_long.txt | runhaskell short_lines.hs
Вот мой вывод:
so am i
short
В книге сказано, что вывод следующий:
i'm short
so am i
short
Я считаю, что это связано с обработкой символа новой строки, но я не могу понять это, поскольку строки должны были удалить символы новой строки перед фильтрацией.Он работает с ручным вводом, но не с трубопроводом.Почему я получаю другой вывод?Я делаю что-то неправильно?Я попытался удалить завершающие символы новой строки в редакторе Atom, но это ничего не изменило.Будем весьма благодарны за любую помощь, почему я не получаю ожидаемый результат и что я могу сделать, чтобы получить ожидаемый результат.Спасибо!