:: String -> String
f s = s
Программа 2:
main :: IO ()
main = interact f
f :: String -> String
f s = reverse (reverse s)
Эти программы ведут себя по-разному - первая программа выводит вводимые строчки по мере поступления, а вторая после окончания ввода.
Но ведь функции f абсолютно эквивалентны на конечных строках.
Получается, то, что я внутри функции f два раза реверснул строку, имеет сайд-эффекты?
И, получается, что в теории можно реализовать любую интерактивную программу внутри f :: String -> String?
``И, получается, что в теории можно реализовать любую интерактивную программу внутри f :: String -> String?` Если ограничиться консолькой, то да, можно выразить IO монаду поверх String -> String
Обсуждают сегодня