ohaskell_guide_2_2-2025

0

Описание

О Haskell по-человечески версия 2.2. от 2025 года Обновление и актуализация книги "О Хаскель по человечески" Дениса Шевченко

Языки

  • Haskell84,1%
  • TeX14,8%
  • JavaScript1,1%
README.md

О 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 бесплатных курса по Хаскелю:

Новости

За новостями об обновлениях и исправлениях книги следите в нашем чате, а также в выпусках подкаста Бананы и Линзы, единственного русскоязычного подкаста, всецело посвящённого 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). Делаем:

По умолчанию, при запуске

ohaskell
без аргументов, собираются все варианты книги:

  1. HTML:
    _site/index.html
    .
  2. PDF для больших экранов:
    pdf/ohaskell.pdf
    .
  3. PDF для экранов мобильных устройств:
    pdf/ohaskell-mobile.pdf
    .
  4. PDF для чёрно-белой печати A4:
    pdf/ohaskell-printable.pdf
    .
  5. EPUB:
    epub/ohaskell.epub
    .

Однако вы можете собрать лишь нужные вам варианты.

HTML:

PDF, оба варианта для экранов:

PDF, вариант для печати:

EPUB:

Проверено на OS X Yosemite, stack 1.0.2, pandoc 1.15.2.1 и LTS Haskell 5.5.

Поддержать проект

Вы можете оказать проекту финансовую помощь на странице поддержки.