On 2003.01.09 at 18:52:28 +0200, Andrei Sosnin wrote:
Их истинного (подразумеваемого) значения в данном контексте я не понял,
поэтому, считая, что "языки структурны, потому что оперируют структурами
данных" и что языки функциональны, когда описывают четкие функции
программы (я подменил это понятие понятием процедурного метода
программирования), я и использовал эту идею, которая подходила под то,
как я понял тему. :-)
Основной признак функционального языка - отсутствие side-эффектов у
функций. То есть все, что передается в функцию, передается через
параметры, все что возвращается - возвращается через результат.
Это как раз то ограничение, благодаря которому становятся возможными
применяющие функционалы, мемоизация и куча других вкусных фишек.
С этой точки зрения C - не функциональный язык, так как функции в нем
могут иметь и очень часто имеют побочные эффекты.
Т.е. повторный вызов функции (скажем printf) с теми же аргументами
компилятор не имеет права заменить на закэшированное значение первого
вызова.