Haskell
Эта книга — перевод англоязычного викиучебника.
Haskell :: Функциональное программирование с типами
[править]Haskell — функциональный язык программирования. Если вы уже программировали и хотите посмотреть как Haskell работает и его отличия от других языков, вы можете прочитать краткий обзор.
Haskell уникален по двум причинам. Во-первых, это чистый функциональный язык. Если у вас есть функция и вы вызываете её в двух разных местах с одинаковыми аргументами, то вы гарантированно получите одинаковые результаты в обоих случаях. Во-вторых, Haskell предоставляет вам самую современную систему типов, включая такие возможности, как классы типов и обобщённые алгебраические типы данных (Мы не ждём, что эти термины что-то означают для вас в настоящее время, но подождите — эта книга поможет вам).
Итак, в чем привлекательность Haskell для его поклонников? В том, что он включает в себя уникальные и современные конструкции? Нет. Людям, программирующим на Haskell, нравится их работа, поскольку, имея дело с чистыми функциями, намного легче понять свои программы и доказать, что они корректны. Кроме того, развитая система типов помогает нам обнаруживать наши ошибки, как глупые, так и весьма коварные.
Цель этой книги — ввести вас как в мир языка Haskell, от основ до сложных понятий, и, одновременно, в мир компьютерного программирования. Опытные программисты, мы просим вас быть особенно внимательными и терпеливыми в процессе обучения. Скорее всего, знакомые вам языки сильно отличаются от Haskell. Навыки, привитые ими, могут затруднить понимание сути происходящего: просто, но по-другому. Поэтому отнеситесь к этому, как к приключению, погружению в совершенно другой мир, смотря на него через затейливую математическую призму функционального программирования.
Обзор
[править]Книга разделена на три части: курс для начинающих, продвинутный курс и практика на Haskell. Последний курс затрагивает «повседневные» задачи, его можно изучать сразу после курса для начинающих.
Пожалуйста, дополняйте учебник! Помочь может каждый, независимо от уровня знания языка. Пять минут, потраченные на улучшение раздела, могут сэкономить кому-нибудь часы работы. Подробнее смотрите на странице notes for contributors.
Для начинающих
[править]
Основы[править] |
Начальный уровень[править] |
Средний уровень[править] |
Монады[править] |
Для продолжающих
[править]
Более глубокое изучение[править] |
Развлекаемся с типами[править] |
Теория[править] |
Производительность[править] |