我怎么能在Clojure中写一个"defn"宏?

unj*_*nj2 9 macros clojure

我正在练习编写宏,我似乎无法开始defn工作.

我的语法是: (my-define name parameter body)

忽略&参数和递归例程,如何将名称绑定到(fn [parameter] body)?

Jon*_*nas 20

你需要改造

(my-define <name> <args> <body>)
Run Code Online (Sandbox Code Playgroud)

(def <name> (fn <args> <body>))
Run Code Online (Sandbox Code Playgroud)

实际上这很简单:

(defmacro my-define [name args body]
  `(def ~name (fn ~args ~body)))
Run Code Online (Sandbox Code Playgroud)

  • 这不利于身体中具有多种形式的功能,也不利于文档字符串. (3认同)