Интерпретация Лиспа и Scheme
Это перевод на русский язык «широко известной в узких кругах» книги Кристиана Кеннека «Les Langages Lisp» (aka Lisp in Small Pieces). Книга затрагивает основы построения интерпретаторов и компиляторов Лиспа (в первую очередь его диалекта Scheme), а также разнообразие вариантов понимания семантики его конструкций и возможностей вроде окружений, замыканий, исключений, продолжений, рефлексии и макросов.
Готовые сборки
В гитхабовских релизах доступны предварительно собранные варианты:
- lisp_a4.pdf — PDF под формат A4;
- lisp-*pt.epub — reflowable EPUB с соответствующим размером шрифта.
На Github Pages хостится web-based версия.
Что где валяется
Файл | Содержимое |
---|---|
build.* |
билд-скрипты |
makeindex.py |
скрипт, формирующий предметный указатель |
book-src/ |
исходный текст книги; содержимое файлов самоочевидно |
epub/ |
исходный текст книги, структура EPUB-контейнера, шрифты |
epub/fontconfig |
CSS с настройками для разных базовых размеров шрифта |
scm-src/ |
копия исходных текстов программ, прилагаемых к книге |
Сборка
Для сборки необходимы pdfLaTeX и Python 2.7. Запускаете из корневой директории простенький скрипт build.sh
или build.bat
и ждёте, пока LaTeX сделает три прохода по тексту. Забираете lisp.pdf
из корневой директории.
Python необходим для генерации предметного указателя. Обеспечьте, пожалуйста, запускаемость интерпретатора по команде python
.
Скрипты не устанавливают необходимые LaTeX-пакеты. Ожидается, что они или уже доступны, или что ваш дистрибутив LaTeX автоматически их выкачает из CTAN при сборке документа.
Сборка проверена в Debian 7.0 (TeX Live) и Windows (MiKTeX 2.9). Для Windows необходимо установить MiKTeX, установить для него CM-Super и PSCyr (0.4d-beta9), остальное выкачивается автоматически. Для Debian достаточно сделать
sudo aptitude install cm-super texlive-lang-english texlive-lang-french \
texlive-lang-cyrillic texlive-latex-base texlive-latex-recommended \
texlive-latex-extra texlive-pictures
И установить PSCyr вручную.
Шрифты из пакета PSCyr используются только для буквиц и титульной страницы, так что при желании от этой зависимости можно легко избавиться без значительного ущерба для качества. Если желания нет, то удачи с установкой:
- исходники PSCyr: ftp://scon155.phys.msu.su/pub/russian/psfonts/0.4d-beta
- deb-пакет: http://people.debian.org/~sgolovan/debian/pool/main/tex/tex-pscyr
- установщиков под Винду я не видел, сам их писать и пакеты для LaTeX делать не умею :(
Сборка EPUB
Для этого дополнительно потребуются Imagemagick и Ghostscript (для конвертации иллюстраций в PNG), и Info-ZIP (для упаковки результата в EPUB-контейнер). Для сборки вызывайте скрипты с опцией epub
. Забираете пачечку lisp-*pt.epub
из корневой директории.
Конвертилка Imagemagick должна быть доступна по команде convert
. Info-ZIP — по команде zip
.
Сборка проверена в Debian 7.0 (Imagemagick 6.7.7, Ghostscript 9.05, Info-ZIP 3.0) и Windows (Imagemagick 6.8.7, Ghostscript 9.10, Info-ZIP 3.0).
Контакты
Домашняя страница профессора Кеннека (клац), его электронный адрес: [email protected]
Оригинал исходных кодов из scm-src
можно скачать одним архивом отсюда.
Если вас смущает GitHub или вы не способны отыскать в Гугле мой личный имейл и домашний адрес, то можете слать жалобы, угрозы и предложения сюда: [email protected]
Лицензирование и прочая шушера
По соглашению с автором книги, данный перевод распространяется под лицензией CC BY-ND 3.0 (см. файл LICENSE
с копией).
Таким образом, вы можете свободно:
-
делиться — копировать, распространять и передавать другим лицам данное произведение;
-
использовать произведение в коммерческих целях.
При обязательном соблюдении следующих условий:
-
«Атрибуция» — вы должны атрибутировать произведение, указав любым удобным образом название книги, имя автора (Кристиан Кеннек, Christian Queinnec), имя переводчика (ilammy), а также дав ссылку на этот репозиторий: https://github.com/ilammy/lisp.
-
«Без производных произведений» — вы не можете изменять, преобразовывать или брать за основу это произведение.
Пользуясь правом уточнения лицензии, лично я не считаю производными работами форки с целью исправления орфографических, пунктуационных ошибок, факапов в формулах и исходных кодах, а также иных внешних недочётов, не влияющих на смысловое наполнение. И этим даю своё разрешение (и даже поощряю их создание) при условии оформления соответствующих пулл-реквестов.
Естественно, производными работами также не считается перевод LaTeX-исходников в другой формат, перевёрстка, перерисовка иллюстраций и любые оформительские изменения, необходимые для адекватной передачи содержимого книги на другом носителе.
За разрешением на всё прочее (сокращение, перевод, создание комиксов по мотивам и т. п.), пожалуйста, обращайтесь к автору книги; он не кусается, его имейл чуть выше. Лично я не против любого использования, но я не вправе это решать самостоятельно.
Также CC BY-ND распространяется исключительно на содержимое книги: текст и иллюстрации, а также на файлик с текстом лицензии. LaTeX-макросы сами по себе, makeindex.py
и всё остальное, не имеющее непосредственного отношения к контенту книги, распространяется на условиях WTFPL (читай: находится в общественном достоянии).
Исходные коды программ, находящихся в scm-src
и приведённых в тексте книги, распространяются на условиях, описанных в scm-src/README
. Директория scm-src
является зеркалом оригинальных исходников, сделанныи исключительно ради удобства. Никаких изменений в него не вносилось.