Una delle cose che fa brillare Ruby è la capacità di creare meglio lingue specifiche del dominio, come
Sebbene si possano duplicare queste librerie in LISP tramite macro, penso che l'implementazione di Ruby sia più elegante. Tuttavia, penso che ci siano casi in cui la macro di LISP può essere migliore di quella di Ruby, anche se non riuscivo a pensarne una.
Quindi, in quale area la macro di LISP è migliore della "capacità" di Ruby di creare DSL?
aggiornare
L'ho chiesto perché i moderni linguaggi di programmazione si stanno avvicinando alla singolarità LISP , come
- C ha un preprocessore di espansione macro , anche se molto primitivo e soggetto a errori
- C # ha degli attributi, sebbene sia di sola lettura, esposto attraverso la riflessione
- Python ha aggiunto Decorator, che può modificare il comportamento della funzione (e della classe per la versione 3.0), anche se sembra piuttosto limitato.
- Ruby TMTOWTDI che rende elegante DSL, se viene applicata cura, ma in modo Ruby.
Mi chiedevo se la macro di LISP fosse applicabile solo a casi speciali e che le altre funzionalità del linguaggio di programmazione fossero abbastanza potenti da sollevare l'astrazione per affrontare le sfide odierne nello sviluppo del software.