Я предпочитаю смотреть на это с другой стороны.ООП, MDSD, TDD, доменный дизайн и многие другие парадигмы - это всего лишь ... парадигмы.Это способы взглянуть на задачу разработки программного обеспечения, разработанную людьми для решения проблем, которых, по их мнению, не хватает во всем, что имело место до них.Оказывается, что функциональное программирование делает то же самое - оно дает программисту возможности абстракции, которые не изящны в языках, которые не имеют функций первого класса.Поэтому я бы не сказал, что MDSD - это отчаянная попытка дать функциональным функциям нефункциональных языков столько, сколько я бы сказал, что люди сталкиваются с одной и той же проблемой с другой точки зрения.
Некоторые ответы на этот недавний вопрос SO по-другому.ShreevatsaR говорит: «Почти все, что вы можете сделать с макросами, вы можете сделать с помощью функции высшего порядка».Матиас Бенкард говорит: «Отсутствие макросов несколько смягчается более сложными ... понятиями, такими как монады и стрелы».Другие комментарии также повторяют ту же тему.Вы упоминаете, что одним из принципов MDSD являются генераторы.Макросы являются генераторами времени компиляции.Поэтому я бы перевел их утверждения как аргумент, что MDSD по своей природе прост в функциональных языках.