А сейчас будто история стёрта
Дело в том, что лисп оказался очень дорогим решением в поддержке -- вот это комбо макросы + деревья s выражений везде + динамика позволяет сделать нечто, что достаточно легко запутать (поигрался в репле и скопипастил в сорцы), но весьма трудно распутать (вот у тебя есть макросы, которые в процессе раскрытия генерируют другие макросы, и в процессе отладки ты можешь иметь дело с деревьями в 10 экранов величиной, причём есть макросы, которые имеют глобальный характер).
Как показал пример хаскеля, все задачи, которые сводились к написанию или использованию макросов могут быть прозрачно и предсказуемо решены вообще не прибегая к метапрограммированию, что является огромным плюсом.
Что подводит нас к такой мысли, что имея хорошую систему типов можно свести на нет необходимость в макросах, а вот макросы сами по себе не способны восполнить отсутствие системы типов.