ohaskell_guide_2_2-2025
Описание
О Haskell по-человечески версия 2.2. от 2025 года Обновление и актуализация книги "О Хаскель по человечески" Дениса Шевченко
Языки
- Haskell84,1%
- TeX14,8%
- JavaScript1,1%
О Haskell по-человечески версия 2.2. от 2025 года
Автор: Денис Шевченко
Замечания от SMWWiki в 2025 году
Этот адаптированный вариант 2025 года сделан на основе замечательной книги Дениса. Я использую эту книгу как конспект, делаю из неё примеры кода и переписываю их на русском языке. Если что то мне непонятно с разу, то я пытаюсь переформулировать более понятным языком. Если совсем непонятно ищу в интернете, и делаю поясняющие вставки.
Почему я использую русский язык для написания примеров кода, имён функций и понятий ? Для того чтобы обучаемый хорошо усваивал материал, он уже должен знать 80% из того что ему объясняют. Поэтому я стараюсь убрать все зацепки в материале которые могут отвлечь обучаемого от погружения в основные понятия языка Хаскель. Понятия сложные, но если переписать их простым языком то окажется, что ничего сложного как правило нет.
Оригинальные примеры на английском я тоже оставляю. Все примеры протестированы на:
- The Glorious Glasgow Haskell Compilation System, version 9.4.8 / Ubuntu 22.04.
Язык Хаскель плохо поддерживается всего 1-3 разработчиками, из академической среды для которых это не основная работа. Увы.
Я не нашёл способа поставить Хаскель на Windows 10 на компьютер в России в 2024/2025 годах - т.к. часть репозиториев кода из скрипта установки должна скачиваться с зеркал в Киеве, которые заблокированы для российских IP адресов. Возможно проблему можно как то решить, но мне было просто перейти на Линукс. Если и Вы решили пользовать Линукс, то использовать Ubuntu 24.04 не рекомендую, лучше использовать:
- Debian 12 с GUI Cinnamon
- Linux Mint c Cinnamon
- ALT Linux c Cinnamon - более менее профессиональная команда разработчиков
Установка на Ubuntu 22.04 / Debian 12
Хаскель устанавливается с помощью ПО GHCup который загружает и настраивает скрипт на сайте Хаскеля: https://www.haskell.org/ghcup/
При установке выбирайте все параметры по умолчанию.
Потребуется доустановить утилиту Curl она есть в 2-х вариантах :
- "старая" но совместимая версия из штатного репозитория Ubuntu 22.04
- "новая" но не работающая со скриптом установки Хаскель версия из Snap Store
выбирать надо естественно "старую" версию утилиты Curl.
В качестве IDE/ Редактора я использую Sublime Text3/4. Ставить монструозный редактор VSCode от Майкрасофт не вижу смысла. Если Вы пред изучением Хаскель не хотите для начала погрузится в настройки этой профессиональной среды разработчика.
И ещё. Денис всё сделал очень круто и у него скриптами из текстовых файлов собиралась книга в PDF формате, код для сайта, и код для мобильной версии сайта. Я на это не способен. Возможно в будущем удастся поправить поэтому его код я пока оставил. Сами правленные мной главы находятся в папке "chapters".
Ваша первая книга об удивительном и прекрасном языке программирования Haskell.
Книга создана с помощью практичного Markdown, блистательного Materialize, впечатляющего Hakyll, элегантного Clay, гибкого BlazeHtml и мощного pandoc. И разумеется, всё это связано воедино силою Haskell. Книга написана при поддержке русскоязычного сообщества Haskell-разработчиков.
Распространение
Книга свободно распространяется на условиях лицензии CC BY-NC 4.0. Исходный программный код ещё более свободно распространяется на условиях лицензии MIT.
Упражнения
После прочтения книги (или, если желаете, в процессе оного) вас ждут практические задания. Пока их очень мало, но в будущем их будет множество, уверяю вас. На Stepic.org есть 2 бесплатных курса по Хаскелю:
- https://stepik.org/course/75/ - Функциональное программирование на языке Haskell 1 и 2 часть
- https://stepik.org/course/82485/promo - Функциональное программирование на языке Haskell. МНМЦ СПбГУ
Новости
За новостями об обновлениях и исправлениях книги следите в нашем чате, а также в выпусках подкаста Бананы и Линзы, единственного русскоязычного подкаста, всецело посвящённого Haskell. Ну и Твиттер мой можете посматривать.
Обновлние: К 2023 году данная книга немного устарела. Появились олнайн компиляторы и IDE (я использую https://replit.com - возможно есть лучше), что сильно понижает порого входа. Также у Хаскеля появилась почти нормальная потдержка русского языка в именах переменных и функций, что значительно упрощает понимание кода. Я (SMWWiki) решил её немного обновить. Я сделал её форк (который Вы читаете в настоящий момент) который использую как конспект. В нём я более подробно распишу неочевидные для понимания места, добавлю готовых для выполнения примеров. Поскольку я не являюсь специалистом по Хаскелю, тем более таким как Денис Шевченко (разработчик оригинальной книги "О Хаскель по человечески") я не рискну вносить какие либо боле менее существенные правки в его оригинальный текст, кроме небольших стилистических правок направленных на упрощение понимания.
Для тех кто никогда не программировал на функциональных языках программирования рекомендую ознакомится с функциональным скриптовым языком программирования Перфо для которого написан очень простой учебник "Учебник языка Перфо для школьников" (https://тхаб.рф/wiki/Учебник_языка_Перфо_для_школьников). Для того чтобы опробывать Перфо на практике достаточно поставить среду разработки языка Перфолента.NET (https://disk.yandex.com/d/G_VEGFAFi-mMKg) и созать файл *.перфо. Время на проработку материал примерно 4 часа. Официальный ТГ канал Языков Перфо и Перфолента https://t.me/perfolenta.
Приёмы использованные мной для упрощения понимания/обучения
- Для эффективного обучения 80% материала д.б. уже известно обучаемому - следовательно необходимо убрать всё второстепенное, как минимум надо по возможности перевести все примеры и комментарии на русский язык насколько это возможно, для того чтобы обучаемый постоянно не "переключал контекст" в голове при разборке примеров.
- Как можно больше комментариев в коде.
- После кода разбор "Как это работает".
- После каждого примера, необходимо размещать полный листинг кода совсеми заголовками который сразу можно скопировать и вставить в онлайн IDE для выполнения. Все полученные знания сразуже должны закреплятся практикой.
- Это не учебник по Хаскелю. Это конспект для освоения/понимания основных приёмов функционального программирования. Конкретный язык не сильно важен. Перфо неплохое решение для быстрого начала.
Локальная сборка (для оригинальной книги 2016 года)
Для локальной сборки вам понадобятся stack, pandoc и TeX-дистрибутив (я использую MacTeX). Делаем:
По умолчанию, при запуске без аргументов, собираются все варианты книги:
- HTML:
._site/index.html - PDF для больших экранов:
.pdf/ohaskell.pdf - PDF для экранов мобильных устройств:
.pdf/ohaskell-mobile.pdf - PDF для чёрно-белой печати A4:
.pdf/ohaskell-printable.pdf - EPUB:
.epub/ohaskell.epub
Однако вы можете собрать лишь нужные вам варианты.
HTML:
PDF, оба варианта для экранов:
PDF, вариант для печати:
EPUB:
Проверено на OS X Yosemite, stack 1.0.2, pandoc 1.15.2.1 и LTS Haskell 5.5.
Поддержать проект
Вы можете оказать проекту финансовую помощь на странице поддержки.