История изменений
Исправление den73, (текущая версия) :
Толком никто не знает, хотя многие пользуются.
Например, есть «функциональная чистота», когда переменные присваиваются один раз и никогда больше не меняются. Это ограничение позволяет легко рассуждать о работе программ, т.е. это полезно. Я бы сказал, что это и есть функциональное программирование.
Есть «функции высшего порядка», когда можно передать параметр-функцию в функцию. Это можно в почти любом языке (Паскаль, Си и т.п.)
Есть «операции над функциями», например, композиция, когда на вход дают две функции, а на выходе получается новая функция - это тоже можно в почти любом языке.
Есть системы типов, которые часто приплетают сюда, но вообще они не имеют отношения.
Ещё говорят, что есть «чисто функциональные языки», например, Хаскель. Это неправда. Хаскель не является чисто функциональным языком, в нём всего лишь есть грань между чистым вычислением и вычислением с глобальным состоянием. Но эта неправда повторяется очень часто и можно запутаться.
Исправление den73, :
Толком никто не знает, хотя многие пользуются.
Например, есть «функциональная чистота», когда переменные присваиваются один раз и никогда больше не меняются. Это ограничение позволяет легко рассуждать о работе программ, т.е. это полезно. Я бы сказал, что это и есть функциональное программирование.
Есть «функции высшего порядка», когда можно передать параметр-функцию в функцию. Это можно в почти любом языке (Паскаль, Си и т.п.)
Есть «операции над функциями», например, композиция, когда на вход дают две функции, а на выходе получается новая функция - это тоже можно в почти любом языке.
Есть системы типов, которые часто приплетают сюда, но вообще они не имеют отношения.
Исправление den73, :
Толком никто не знает, хотя многие пользуются.
Например, есть «функциональная чистота», когда переменные присваиваются один раз и никогда больше не меняются. Это ограничение позволяет легко рассуждать о работе программ, т.е. это полезно. Я бы сказал, что это и есть функциональное программирование.
Есть «функции высшего порядка», когда можно передать параметр-функцию в функцию. Это можно в почти любом языке (Паскаль, Си и т.п.)
Есть «операции над функциями», например, композиция, когда на вход дают одну функцию, а на выходе получется другая - это тоже можно в почти любом языке.
Есть системы типов, которые часто приплетают сюда, но вообще они не имеют отношения.
Исходная версия den73, :
Толком никто не знает, хотя многие пользуются.
Например, есть «функциональная чистота», когда переменные присваиваются один раз и никогда больше не меняются. Это ограничение позволяет легко рассуждать о работе программ, т.е. это полезно. Я бы сказал, что это и есть функциональное программирование.
Есть «функции высшего порядка», когда можно передать параметр-функцию в функцию.
Есть «операции над функциями», например, композиция, когда на вход дают одну функцию, а на выходе получется другая.