2 ms·
Clojure best-practices warn against using macros when a function would do. It tends to complicate debugging and maintainability. However, macros are very powerf
by elwell 7y ago
Clojure best-practices warn against using macros when a function would do. It tends to complicate debugging and maintainability. However, macros are very powerful, and when they are the right tool for the job they can create magic and afford new ways of looking at a problem.
On the other end of the spectrum, Racket[0] fully embraces the DSL-creating power of macros.
To answer your question: I think that lisp's extensibility can be used to create something difficult to share/understand OR easier to share/understand [1]. Whereas some other languages might be limited by their ability to naturally express a domain-fitted solution, yet they make it easier to avoid creating a cryptic mess. So... lisps don't confuse people, people do.
[0] - https://racket-lang.org/ https://racket-lang.org/
[1] - a good example of macro use is Compojure's use of a macro for http route definitions. https://github.com/weavejester/compojure#usage https://github.com/weavejester/compojure#usage