Haskell
Háskell — функциональный язык программирования. Является одним из самых распространённых нестрогих языков программирования. Имеет очень развитую систему типизации, однако система модулей разработана хуже. Последний стандарт языка, ставший стандартом функционального программирования — Haskell-98. Берёт своё начало из языка Miranda, который был разработан Дэвидом Тёрнером в качестве стандартного функционального языка. Назван по имени математика Хаскелла Карри.
Характеристики языка
В качестве основных характеристик языка Haskell можно выделить следующие:
- возможность использования лямбда-абстракции;
- функции высшего порядка;
- недопустимость побочных эффектов (чистота языка);
- ленивые вычисления (lazy evaluation);
- сопоставление по образцу, функциональные образцы (pattern matching);
- параметрический полиморфизм и полиморфизм классов типов;
- статическая типизация;
- автоматическое выведение типов (основано на модели типизации Хиндли-Милнера);
- алгебраические типы данных;
- типы данных с параметрами;
- рекурсивные типы данных;
- абстрактные типы данных (инкапсуляция);
- списочные включения (list comprehensions);
- использование охраны (guards);
- возможность писать программы с побочными эффектами без нарушения парадигмы функционального программирования с помощью монад;
- возможность интеграции с программами, реализованными на императивных языках программирования посредством открытых интерфейсов (стандартное расширение языка Foreign Function Interface).
Возможности языка не ограничиваются стандартом. Некоторые реализации предлагают собственные расширения языка.
Имеет интерпретаторы (один из самых известных — HUGS) и компиляторы (один из самых известных — Glasgow Haskell Compiler (GHC)).
Популярен в академических кругах, но малоизвестен среди прикладных программистов.
В последнее время расширяется набор прикладных библиотек, язык интегрируется в распространённые программные системы (.Net [1], COM/ActiveX HaskellScript).
Расширения языка:
- генерация исходного кода во время компиляции (Template Haskell);
- объектно-ориентированное программирование (O’Haskell, Haskell++ и Mondrian).
Расширения реализаций языка (относится к GHC):
Ссылки
- http://www.haskell.org/ — Очень насыщенный сайт, посвящённый функциональному программированию в общем и языку Haskell в частности. Содержит различные справочные материалы, список интерпретаторов и компиляторов Haskell’а (в настоящий момент все интерпретаторы и компиляторы бесплатны). Кроме того, имеется обширный список интересных ссылок на ресурсы по теории функционального программирования и другим языкам (Standard ML, Clean).
- http://www.haskell.ru/ — Полный перевод описания языка Haskell на русский язык.
- http://www.haskell.org/hugs — HUGS. Наиболее широко используемый интерпретатор языка.
- http://www.haskell.org/ghc — Glasgow Haskell Compiler. Поддерживает множество архитектур. Высокая скорость исполнения программ с сохранением всех преимуществ функционального языка программирования. Некоторые расширения языка и библиотеки поддерживаются только в этой реализации Haskell.
- http://www.roman-dushkin.narod.ru/fp.html — Курс лекций по функциональному программированию, читаемый в МИФИ с 2001 года.
- http://kchri.narod.ru — Курс лекций и лабораторные работы на Haskell
Используемые в разработке: ABAP/4 | Ада | Ассемблеры | Awk | BASIC | Си | КОБОЛ | C++ | C# | ColdFusion | D | Delphi | Forth | FoxPro | DataFlex | Фортран | Java | JavaScript | J++ | J# | Icon | Limbo | Лисп | Lua | Objective-C | Оберон | Oz | Паскаль | Perl | PHP | PL/I | Пролог | Руби | Python | Tcl | Smalltalk | SQL | Visual DataFlex | Visual Basic | VB.NET
|