Haskell

Материал из Xgu.ru

Перейти к: навигация, поиск


Haskell — функциональный язык программирования со строгой типизацией и поддержкой ленивых вычислений. Весьма популярен в академической среде и имеет меньшую популярность как прикладной язык программирования. Язык нельзя отнести ни к чисто интерпретируемым, ни к компилируемым; существуют как интерпретаторы (например, HUGS), так и компиляторы (например GHC, Glasgow Haskell Compiler) для Haskell.

Главными отличительными особенностями языка принято считать[1]:

  1. Чистоту (referential transparency);
  2. Отложенные вычисления[2] (lazyness);
  3. Строгую типизацию;
  4. Поддержку монад.

В качестве иллюстрации мощи языка часто[3] приводят реализацию алгоритма быстрой сортировки на Хаскеле и на Си[4]:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)


Хаскель рекомендуют изучать не только для того чтобы его использовать в дальнейшем, но как минимум для того, чтобы начать иначе писать программы на тех языках, на которых писали раньше, и вообще по-другому начать смотреть на программирование.

Содержание

[править] Известные программы на Haskell

Известные вещи, целиком или частично написанные на Haskell:

  • Pugs — интерпретатор и компилятор для языка Perl 6;
  • Darcs — распределённая система контроля версий;
  • xmonad — фреймовый оконный менеджер; объём кода не превышает 1200 строк.

[править] Юмор

По музыкальной классификации языков[5] Хаскел можно сравнить с mathcore.

[править] См. также

[править] Дополнительная информация

  • Haskell Tutorials (англ.) — большая коллекция ссылок на учебные материалы по языку Хаскель на сайте Haskell Wiki (многие перечисленные ниже ссылки представлены в этой коллекции)
  • Learn You Haskell for Great Good! (англ.) — весёлая книжка про основы Хаскеля, которая читается очень легко, на одном дыхании. Рассчитана на тех, кто привык писать программы на императивных языках программирования (C, Perl, Python). Хорошо читается в сочетании с Real World Haskell; есть pdf[6]
  • Real World Haskell (англ.) — очень хорошая книга про Хаскелю, написанная коллективом авторов, в числе которых создатель Mercurial; содержит глубокое рассмотрение многих ключевых вопросов функционального программирования; можно читать после Learn You Haskell for Great Good! или в сочетании с ней
  • Haskell: введение в функциональное программирование (рус.) Краткий учебник от СУНЦ НГУ. В сжатом виде и с примерами рассмотрены основы программирования на Haskell и азы функционального программирования
  • Основы / Haskell (рус.) — небольшой пост на Хабре, который можно прочитать как начальное преначальное введение в язык
  • Haskell Quest Tutorial (рус.) - серия статей, написанных доступным и простым языком. Шаг за шагом разрабатывается текстовая приключенческая игра наподобие Zork. Очень подробные объяснения. Подойдет для изучения языка с нуля
  • Презентации и материалы лекций 2010 года. (рус.) - Полный набор материалов "Теория функционального программирования. Язык Haskell" (видео, презентации, аудио) (!!)
  • Коллекция «secsem Теория функционального программирования. Язык Haskell.» (рус.) - видеоролики из того же курса, на Яндекс.Видео
  • Haskell в реальном мире (рус.) - статья о реальном применении языка в производстве (телекомы, биллинг)
  • Haskell в настоящем проекте - другая статья о применении языка
  • Типы данных, паттернг матчинг и функции / Haskell (рус.) (продолжение)
  • Классы типов, монады (рус.) (и продолжение)
  • Скрипты на Хаскеле (пробую писать) (рус.) — примеры простых, но полезных программ на Хаскеле
  • Практика функционального программирования (рус.) — первый номер журнала по функциональному программированию (стоит прочитать всем, кто неравнодушен к вопросам изучения программирования) (следующие выпуски: 2, 3, 4)
  • Category:Programming language:Haskell — Literate Programs (англ.) — категория Haskell на сайте Literate Programs (вообще сайт весьма годный: множество реализаций прекрасных алгоритмов на разнообразных языках программирования с подробным объяснением что, как и почему)
  • Haskell-Cafe (англ.) — список рассылки, где доброжелательные люди мило беседуют о хаскелле, функциональном программировании и других интересных вещах
  • A taste of Haskell (tutorial) (англ.) — быстрое введение в суть языка на примере кода оконного менеджера Xmonad, написанного на хаскеле
  • Hitchhikers guide to Haskell (англ.) — быстрое введение в Хаскель от Дмитрия Астапова; начиная с Hello World и вперёд
  • Write Yourself a Scheme in 48 Hours (англ.) — автор разрабатывает интерпретатор для Scheme на Хаскеле, попутно рассматривая этот язык, от самых азов и до самых глубин. Предполагается, что Scheme вы уже знаете
  • Сильные стороны языка Haskell (рус.) - Неплохое освещение преимуществ и сущности языка Haskell
  • Причины, по которым мне нравится Haskell (рус.) Довольно интересная статья о применимости языка
  • Еще Одно Руководство по Монадам (рус.) - Перевод широко известного руководства Yet Another Monad Tutorial на русский язык

[править] Функциональное программирование

[править] Примечания

  1. http://www.haskell.org/pipermail/haskell-cafe/2009-May/061614.html
  2. Подробнее о них от Дмитрия Астапова [1]
  3. Хотя некоторые считают, что совершенно напрасно! [2]
  4. Но эта реализация на Си очень быстра и требует для исполнения несоизмеримо меньше памяти, чем реализация на Хаскеле. Сам Хаскель хотя и медленнее Си в общем случае, но ненамного [3]
  5. http://piranha.org.ua/blog/2008/05/10/musical-languages/
  6. http://learnyousomeerlang.com/ — Аналогичную книгу сделали и по Эрлангу; идею позаимствовали у Мирана Липовацы, картинки и текст сделали свои; не знаю, насколько получилась книжка, надо прочитать, но с виду один в один со своим прототипом, только картинки немного не такие прикольные
Источник — «http://xgu.ru/wiki/Haskell»