Haskell
Háskell — стандартизованный чистый функциональный язык программирования общего назначения. Является одним из самых распространённых языков программирования с поддержкой отложенных вычислений.
Типизация в Хаскеле строгая, статическая, с автоматическим выводом типов. Поскольку язык функциональный, то основная управляющая структура — это функция.
Серьёзное отношение к типизации — ещё одна отличительная черта Хаскеля. Концепция языка отражает идею математика Хаскелла Карри, писавшего, что «доказательство — это программа, а доказываемая формула — это тип программы». Именно в честь Х. Карри язык и получил своё название.
Характеристики языка
В качестве основных характеристик языка Haskell можно выделить следующие:
- возможность использования лямбда-абстракции;
- функции высшего порядка;
- частичное применение;
- недопустимость побочных эффектов (чистота языка);
- ленивые вычисления (lazy evaluation);
- сопоставление с образцом, функциональные образцы (pattern matching);
- параметрический полиморфизм (в т.ч. абстрагирование от конструктора типа) и полиморфизм классов типов;
- статическая типизация;
- автоматическое выведение типов (основано на модели типизации Хиндли — Милнера);
- алгебраические типы данных;
- параметризуемые типы данных;
- рекурсивные типы данных;
- абстрактные типы данных (инкапсуляция);
- генераторы списков (list comprehensions);
- охраняющие выражения (guards);
- возможность писать программы с побочными эффектами без нарушения парадигмы функционального программирования с помощью монад;
- возможность интеграции с программами, реализованными на императивных языках программирования посредством открытых интерфейсов (стандартное расширение языка Foreign Function Interface).