Подтвердить что ты не робот

Верно ли, что Lisp не является функциональным языком программирования?

Я читал в книге: "Создатели программ", интервью с Гвидо ван Россом говорит:

Более фундаментальное свойство Python, совместно использующее Lisp (а не функциональный язык!) - это то, что функции являются первоклассными объектами...

Итак, Lisp является не языком функционального программирования?

Неужели Гвидо ошибается? Что это значит?

4b9b3361

Ответ 1

Практически каждый Lisp, который я знаю, может использоваться для программирования в функциональном стиле (все, что вам действительно нужно, это первоклассные функции, в конце концов!)

Однако Lisps больше похож на многоязычные инструментальные средства: вы можете выполнять функциональное программирование, ООП, логическое программирование, определять свой собственный DSL для какой-то странной новой парадигмы и т.д.

Lisp, который, вероятно, ближе всего к функциональному стилю программирования, Clojure (он имеет ленивую оценку, обескураживает ООП, использует неизменные структуры данных во всем, ограничивает неконтролируемую мутацию (через STM), имеет довольно много чистых/функции более высокого порядка в основной библиотеке и т.д.)

Ответ 2

Существуют языки, которые позволяют и поощряют парадигмы функционального программирования. Среди них и Python, и Lisp. Lisp, в частности, был первым, кто применил теоретические концепции, полученные из лямбда-исчисления. В конце 1950-х годов, когда существовали почти только FORTRAN и Lisp, Lisp был выделен как функциональный, где FORTRAN с полностью статическим управлением памятью никогда не считался функциональным.

Однако ни Python, ни Lisp не применяют чистую функциональность, позволяя изменять переменные, состояния и императивные конструкции. Смешение стилей всегда может быть полезно на практике, поэтому, вероятно, вы не найдете много примеров чистых понятий в очень успешных инструментах.

Среди чисто функциональных языков, Haskell, Clean и Miranda приведены примеры, но я ничего не могу сказать о них.