3
LISP的宏在哪些方面比Ruby的创建DSL的“能力”更好?
使Ruby发光的一件事是能够更好地创建特定于域的语言,例如 西纳特拉 规格 耙 Ruby on Rails的ActiveRecord 尽管可以通过宏在LISP中复制这些库,但我认为Ruby的实现更为优雅。尽管如此,我认为在某些情况下LISP的宏可以比Ruby的宏更好,尽管我想不到。 那么,LISP的宏在哪一个领域比Ruby创建DSL的“能力”(如果有)更好? 更新 我之所以这样问,是因为现代编程语言正在接近LISP的奇点,例如 C获得了宏扩展预处理器,尽管非常原始并且容易出错 C#具有属性(尽管这是只读的),通过反射公开 Python增加了装饰器,尽管感觉很有限,但它可以修改函数的行为(以及v 3.0的类)。 Ruby TMTOWTDI,如果应用得当,则可以使用Ruby方式制作精美的DSL。 我想知道LISP的宏是否仅适用于特殊情况,而其他编程语言功能是否强大到足以提高抽象度来应对当今软件开发中的挑战。