One of things that makes Ruby shine is the ability to create Domain Specific Languages better, likeSinatraRspecRakeRuby on Rails' ActiveRecordThough one can duplicate these libraries in LISP through macro, I think Ruby's implementation is more elegant. Nonetheless, I think there are cases that LISP's macro can be better than Ruby's, though I could not think of one.So, in what area is LISP's macro better than Ruby's ability to create DSL, if any?updateI've asked this because modern programming languages are approaching the LISP singularity, likeC got macro expansion preprocessor, though very primitive and prone to errorC# has attributes, though this is a read-only, exposed through reflectionPython added decorator, that can modify the behavior of the function (and class for v 3.0), though feels quite limited.Ruby TMTOWTDI that makes elegant DSL, if care is applied, but in Ruby way. I was wondering if LISP's macro is only applicable to special cases and that the other programming language features are powerful enough to raise the abstraction to meet the challenges today in software development.
In what area is LISP's macro better than Ruby's ability to create DSL
ruby;lisp;dsl
Read On Lisp and then decide for yourself.My summary is that Ruby is better at providing convenient syntax.  But Lisp wins, hands down, at the ability to create new abstractions, and then to layer abstraction on abstraction.  But you need to see Lisp in practice to understand that point.  Hence the book recommend.