Вы ищете подробности, особенно о компиляции ленивых вычислений? Есть книга Саймона Пейтон-Джонса, упомянутая Максом Болингброком, а также книга, подробно описывающая реализацию Clean, находится в сети:
http://wiki.clean.cs.ru.nl/Functional_Programming_and_Parallel_Graph_Rewriting
Если у вас есть университетская принадлежность и вы хотите что-то меньшее, вы можете попробовать получить эти книги (Хендерсон и Диллер, безусловно, распроданы):
Антони Диллер "Компиляция функциональных языков" ISBN 0 471 92027 4
Питер Хендерсон "Приложение и реализация функционального программирования" ISBN 0-13-331579-7
AJT Davie "Введение в системы функционального программирования с использованием Haskell" ISBN 0 521 27724 8
У Diller есть полноценный компилятор для ленивого языка (реализованный на Паскале) через комбинаторное сокращение. Это была техника реализации, изобретенная Дэвидом Тернером для SASL. У Хендерсона есть много частей компилятора для LISPkit, миниатюрного ленивого варианта Lisp. Дэви довольно подробно описывает механизм компиляции ленивого языка, например, есть описание STG, которое намного короче, чем книга Саймона Пейтон-Джонса (STG - это абстрактная машина SPJ, используемая для Haskell).
Разработчики Clean имеют довольно много информации о реализации SAPL (простой прикладной язык), если вы просмотрите их список публикаций:
https://clean.cs.ru.nl/Publications
Наконец, существует ряд документов, в которых описаны аспекты Utrecht Haskell Compiler UHC (и EHC). Я думаю, что большая часть информации связана с тем, как организован компилятор (с грамматиками атрибутов и «случайным образом») и как реализованы системы типов (в EHC есть различные уровни системы типов), а не как внутренняя «компиляция» работает.
person
stephen tetley
schedule
08.12.2010