Предварительная трансляция макро в HomeLisp
Как хорошо известно, макро в Лиспе — это особая функция, которая вычисляется в два этапа: на первом этапе происходит генерация некоей промежуточной формы, а на втором этапе эта форма выполняется в текущем контексте. Важно отметить, что на первом этапе ядро Лиспа не вычисляет значения аргументов вызова.Использование макро в гомоиконном Лиспе позволяет добавлять в Лисп новые «операторы» (именно поэтому знаменитый лиспер Пол Грэм назвал Лисп программируемым языком программирования).Однако, у медали имеется и обратная сторона: если код содержит большое количество макро, то при интерпретации Лиспа будет тратиться значительное время на макрогенерацию. Читать далее