Una de las cosas que hace brillar a Ruby es la capacidad de crear mejores lenguajes específicos de dominio, como
Aunque uno puede duplicar estas bibliotecas en LISP a través de macro, creo que la implementación de Ruby es más elegante. No obstante, creo que hay casos en que la macro de LISP puede ser mejor que la de Ruby, aunque no se me ocurre ninguno.
Entonces, ¿en qué área es mejor la macro de LISP que la "capacidad" de Ruby para crear DSL, si la hay?
actualizar
He preguntado esto porque los lenguajes de programación modernos se están acercando a la singularidad de LISP , como
- C obtuvo un preprocesador de expansión macro , aunque muy primitivo y propenso a errores
- C # tiene atributos, aunque este es de solo lectura, expuesto a través de la reflexión
- Python agregó decorador, que puede modificar el comportamiento de la función (y la clase para v 3.0), aunque se siente bastante limitado.
- Ruby TMTOWTDI que hace DSL elegante, si se aplica el cuidado, pero de manera Ruby.
Me preguntaba si la macro de LISP solo es aplicable a casos especiales y si las otras características del lenguaje de programación son lo suficientemente potentes como para aumentar la abstracción para enfrentar los desafíos actuales en el desarrollo de software.