Я пытаюсь прочитать стандартный ввод строки за строкой и обрабатывать каждую строку с помощью функции типа foo :: String -> Int
. Есть ли способ сделать это при условии, что мы не знаем количество строк, которые мы хотим прочитать, или учитывая, что количество строк указано в первой строке?Чтение строки по строке в Haskell
Что я пробовал Множество вещей, которые дают бессмысленные ошибки, такие как «ошибка парсера». Например
main = do {
getLine <- getContents;
let result = show (foo getLine);
putStrLn (foo result);
}
Edit Странно, но это не печатает длину
main = do {
a <- getContents;
putStrLn (show (length a));
}
, но это делает печать 5.
main = do {
a <- getContents;
putStrLn (show 5);
}
'getLine' - это встроенная функция в haskell, подумайте о том, чтобы назвать вашу переменную чем-то еще? Кроме того, нотация 'do' не нужна' {} ' –