Престижность за один из самых офигенных плакатов FP, которые я когда-либо видел! :) Передайте мои комплименты julian255 на Reddit! Побочные эффекты являются частью жизни. Функциональные программисты живут в странном мире, где побочные эффекты инкапсулированы в монады. Монады — это причудливый способ «засунуть программную пыль под ковер», причем пыль — это ох как неприятные нечистые функции. К сожалению, рано или поздно вы обнаружите, что в конечном итоге вам нужно что-то напечатать на экране или получить доступ к данным из базы данных.

Большинство разработчиков узнают об этом только после большого количества продвинутых курсов компьютерных наук FP и практического опыта. Мне нравится этот пост (но на монадах так много, что я сбился со счета)

https://www.schoolofhaskell.com/school/starting-with-haskell/basics-of-haskell/3-pure-functions-laziness-io

Итак, головная боль начинается здесь (цитата из приведенной выше статьи):

И тем не менее, даже самая простая программа на Haskell делает больше, чем просто перемешивает электроны в процессоре.

main = putStrLn "Hello World!"

Запустите этот код, и вы увидите, что текст чудесным образом появляется на вашем экране. Чистая функция не может этого сделать — у нее не может быть побочных эффектов!

Решение в большинстве случаев — не что иное, как философская жемчужина информатики. Запись в файл не имеет побочного эффекта, потому что вы просто декларируете это, но фактически не выполняете действие. Ого, невероятный подвиг метапрограммирования. Поэтапное выполнение — вот почему FP может быть «чистым»: интерпретатор выставляется как часть самой программы. :)

Для справки: я годами использую scala, r, python и javascript в «режиме FP», и мне это действительно нравится, и я использую его время от времени.

Для тех из вас, кто достаточно смел, чтобы работать: удачи. Вам это понадобится :) Вот забавная шутка (ну на самом деле 50% шутка 50% правда) о чистых функциях