Язык Haskell: О пользе и вреде лени: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 13:
Язык программирования [[:w:Haskell|Haskell]] — это «ленивый» функциональный язык программирования с [[:w:полиморфизм в языках программирования|полиморфизмом типов]]. Он достаточно необычен: других таких ленивых и настолько [[w:Чистота языка программирования|чистых]] функциональных языков нет! Что означают слова «чистый», «функциональный» и «полиморфизм типов», в двух словах не объяснить.
 
Язык Haskell (Ха́скелХа́скель) функциональный, поскольку в нём основное понятие — это [[w:Функция (программирование)|функции]]. Но функции есть в любом языке программирования! В языках Паскаль, [[w:BASIC|Бейсик]], Си, [[w:Python|Питон (Python)]]… — везде есть понятие функции, и везде мы можем определять свои функции. Но не торопитесь делать выводы. Речь идёт не только о формальных возможностях языка, но и о ''стиле составления программ''. В функциональных языках программирования с функциями можно работать так же, как с числами или строковыми переменными. Например, представьте себе функцию, которая в качестве аргумента принимает некоторую функцию, а в качестве результата возвращает другую функцию. Возможность создавать переменные типа функций в языках Си/[[w:C++|Си++]], Паскаль, [[w:Object Pascal|Object Pascal]] есть{{ref|cons1}}, но ею пользуются крайне редко. Перечисленные языки ''процедурные'', и они не приспособлены для того, чтобы писать программы в функциональном стиле.
 
Функциональный программист мыслит в терминах функций и зависимостях функций друг от друга. Императивный программист мыслит в терминах действий и объединения последовательностей действий в процедуры.