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.
Учебник предназначен для тех:
- кто уже знает Лисп (особенно диалект Scheme) и хочет изучить Haskell;
- кто не владеет ни одним языком программирования, но имеет большой запас базовых знаний и знаком с компьютерами.
Тем, кто использует процедурные и объектно-ориентированные языки (такие как C, Java, Python), следует забыть многое, что вы уже знаете о программировании. Haskell очень сильно отличается от этих языков, и требует совершенно другого образа мышления при написании программ. Будет лучше, если вы начнёте изучать это руководство с чистого листа, и не будете пытаться сравнивать Haskell с императивными языками, потому как многие концепции в них (классы, функции, 'return') имеют совершенно иные значения в Haskell.
Каждый урок использует код, написанный в предыдущих главах. Поэтому уроки следует изучать по порядку.
Мы подразумеваем, что вы используете GHC в качестве компилятора. Вы также можете использовать Hugs, но, возможно, для него вам придется скачать дополнительные библиотеки.
Исходные коды из учебника доступны здесь: исходные коды.
Содержание
[править]- Первые шаги: компиляция и запуск
- Парсинг
- Вычисление, часть 1
- Обнаружение ошибок и исключения
- Вычисление, часть 2
- Организация REPL: основы ввода/вывода
- Добавляем переменные и присваивание: Изменяемые состояния в Haskell
- Определение функций языка Scheme: Замыкания и Окружения
- Создание примитивов ввода/вывода: файловый ввод/вывод
- Стандартная библиотека: Fold и Unfold
- Заключение и дополнительные материалы
- Решение упражений