L'une des choses qui fait briller Ruby est la possibilité de mieux créer des langages spécifiques au domaine, comme
Bien que l'on puisse dupliquer ces bibliothèques dans LISP via une macro, je pense que l'implémentation de Ruby est plus élégante. Néanmoins, je pense qu'il y a des cas où la macro de LISP peut être meilleure que celle de Ruby, bien que je ne puisse pas en penser un.
Alors, dans quel domaine la macro de LISP est-elle meilleure que la "capacité" de Ruby à créer DSL, le cas échéant?
mise à jour
Je l'ai demandé parce que les langages de programmation modernes approchent de la singularité LISP , comme
- C a un préprocesseur d'extension de macro , bien que très primitif et sujet aux erreurs
- C # a des attributs, bien que ce soit en lecture seule, exposé par réflexion
- Python a ajouté un décorateur, qui peut modifier le comportement de la fonction (et de la classe pour la version 3.0), mais semble assez limité.
- Ruby TMTOWTDI qui rend DSL élégant, si des soins sont appliqués, mais de manière Ruby.
Je me demandais si la macro de LISP n'est applicable qu'à des cas spéciaux et que les autres fonctionnalités du langage de programmation sont suffisamment puissantes pour élever l'abstraction pour relever les défis actuels du développement logiciel.