Macros 我该怎么写一个“我该怎么写?”;“定义”;Clojure中的宏?
我在练习编写宏,但似乎无法使Macros 我该怎么写一个“我该怎么写?”;“定义”;Clojure中的宏?,macros,clojure,Macros,Clojure,我在练习编写宏,但似乎无法使defn工作 我的语法是:(我的定义名称参数体) 忽略¶meters和递归例程,如何将名称绑定到(fn[parameter]body)?您需要进行转换 (my-define <name> <args> <body>) 您可以使用macroexpand在repl中查看宏扩展为什么。例如,(宏扩展(defn foo[]1))。这在调试您自己的宏以及尝试学习clojure/core宏时都很有用。还可以使用(source defn
defn
工作
我的语法是:(我的定义名称参数体)
忽略¶meters和递归例程,如何将名称绑定到(fn[parameter]body)?您需要进行转换
(my-define <name> <args> <body>)
您可以使用
macroexpand
在repl中查看宏扩展为什么。例如,(宏扩展(defn foo[]1))
。这在调试您自己的宏以及尝试学习clojure/core宏时都很有用。还可以使用(source defn)
直接检查源代码。这不便于在正文中使用多个窗体的函数,也不便于使用docstring。对于多个窗体,请使用拼接运算符(@)->~@body
(def <name> (fn <args> <body>))
(defmacro my-define [name args body]
`(def ~name (fn ~args ~body)))