Одна из вещей, которая делает Ruby сиять, - это возможность создавать доменные языки лучше, например,
Хотя можно скопировать эти библиотеки в LISP с помощью макроса, я думаю, что реализация Ruby более элегантна. Тем не менее, я думаю, что есть случаи, когда макрос LISP может быть лучше, чем макрос Ruby, хотя я не мог придумать ни одного.
Итак, в какой области макрос LISP лучше, чем «способность» Руби создавать DSL, если таковая имеется?
Обновить
Я спросил об этом, потому что современные языки программирования приближаются к сингулярности LISP , например
- C получил препроцессор расширения макросов , хотя и очень примитивный и подверженный ошибкам
- C # имеет атрибуты, хотя это только для чтения, через отражение
- Python добавил декоратор, который может изменить поведение функции (и класса для v 3.0), хотя и чувствует себя довольно ограниченным.
- Ruby TMTOWTDI, который делает элегантный DSL, если применяется осторожность, но в Ruby.
Мне было интересно, применим ли макрос LISP только к особым случаям и что другие функции языка программирования достаточно мощны, чтобы поднять абстракцию для решения задач, стоящих сегодня в разработке программного обеспечения.