Write Yourself a Scheme in 48 Hours

Материал из Викиучебника — открытых книг для открытого мира
Данная работа является переводом wiki-версии учебника Write Yourself a Scheme in 48 Hours с английского языка на русский.
Это импортированный в Wiki вариант руководства "Пишем интерпретатор Scheme за 48 часов" (ориг. "Write Yourself a Scheme in 48 Hours"), автором которого является Jonathan Tang. Выражаем благодарность Джонатану за то, что он разрешил опубликовать его работу на Wiki. Все авторы могут свободно исправлять wiki-версию учебника.

Краткий обзор[править]

Большинство учебников по Haskell в интернете больше похожи на справочники. Они описывают синтаксис языка, некоторые его конструкции, и некоторые простые функции для работы с командной строкой. А вот о том, как писать функциональные, полезные программы, упоминается в конце, а иногда и вообще опускается.

У этого учебника другой подход. Вы начнёте с изучения аргументов командной строки и их разбора, и дойдёте до написания полнофункционального интерпретатора языка программирования Scheme, в котором будет реализовано большое подмножество R5RS Scheme. А по ходу вы изучите систему ввода/вывода, mutable state, динамическую типизацию, обработку ошибок, и разбор текстов. А когда вы закончите, вы достаточно свободно будете владеть и Haskell, и Scheme.

Учебник предназначен для тех:

  1. кто уже знает Лисп (особенно диалект Scheme) и хочет изучить Haskell;
  2. кто не владеет ни одним языком программирования, но имеет большой запас базовых знаний и знаком с компьютерами.

Тем, кто использует процедурные и объектно-ориентированные языки (такие как C, Java, Python), следует забыть многое, что вы уже знаете о программировании. Haskell очень сильно отличается от этих языков, и требует совершенно другого образа мышления при написании программ. Будет лучше, если вы начнёте изучать это руководство с чистого листа, и не будете пытаться сравнивать Haskell с императивными языками, потому как многие концепции в них (классы, функции, 'return') имеют совершенно иные значения в Haskell.

Каждый урок использует код, написанный в предыдущих главах. Поэтому уроки следует изучать по порядку.

Мы подразумеваем, что вы используете GHC в качестве компилятора. Вы также можете использовать Hugs, но, возможно, для него вам придется скачать дополнительные библиотеки.

Исходные коды из учебника доступны здесь: исходные коды.

Содержание[править]

  1. Первые шаги: компиляция и запуск
  2. Парсинг
  3. Вычисление, часть 1
  4. Обнаружение ошибок и исключения
  5. Вычисление, часть 2
  6. Организация REPL: основы ввода/вывода
  7. Добавляем переменные и присваивание: Изменяемые состояния в Haskell
  8. Определение функций языка Scheme: Замыкания и Окружения
  9. Создание примитивов ввода/вывода: файловый ввод/вывод
  10. Стандартная библиотека: Fold и Unfold
  11. Заключение и дополнительные материалы
  12. Решение упражений