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