常见的lisp阅读器宏有什么Clojure没有的优势?
最近我一直在使用Clojure,但我仍然不明白我没有得到常见lisp reader宏提供的功能。你能简单地给我解释一下吗?一个简单的例子。Common Lisp对向量#()而不是[]有不同的读取器语法。但是,通过创建自定义读卡器宏的功能,您可以拥有一个读卡器宏,它也可以在Common Lisp中将[2 3 4 5]转换为向量常见的lisp阅读器宏有什么Clojure没有的优势?,clojure,common-lisp,s-expression,reader-macro,Clojure,Common Lisp,S Expression,Reader Macro,最近我一直在使用Clojure,但我仍然不明白我没有得到常见lisp reader宏提供的功能。你能简单地给我解释一下吗?一个简单的例子。Common Lisp对向量#()而不是[]有不同的读取器语法。但是,通过创建自定义读卡器宏的功能,您可以拥有一个读卡器宏,它也可以在Common Lisp中将[2 3 4 5]转换为向量 由于大多数用户不会意识到自己创建的读卡器宏的含义,因此很少使用它们,为了避免混淆,Rich Hickey决定取消在Clojure中使用用户定义的读卡器宏的功能。然而,Clo
由于大多数用户不会意识到自己创建的读卡器宏的含义,因此很少使用它们,为了避免混淆,Rich Hickey决定取消在Clojure中使用用户定义的读卡器宏的功能。然而,Clojure有预定义的读卡器宏——quote、vector、regex、map等。简而言之,读卡器宏使您能够在某些限定的上下文中重新定义编程语言的语法 例如,您可以在给定读卡器宏的情况下自己实现正则表达式文本(例如,
#“pattern”
)。如果没有它们,您将被迫正确地转义传递给re pattern
的字符串文本中的正则表达式
顺便说一句,虽然没有用于修改阅读器的公共Clojure API,但这并非不可能,如以下文章所示: