1

重命名 Clojure 的特殊形式的最佳方法是什么?

例如,如果我更喜欢 defvar 而不是 def 或 defun 而不是 defn,那么最好的方法是什么?

4

2 回答 2

8

只需使用defanddefn代替。您可以定义转发到底层特殊形式的宏,但使用其他人所做的相同原语会更好。

于 2017-09-22T01:44:58.437 回答
5

虽然我完全同意amalloy 的回答,但看到快速而肮脏的解决方案可能会很有趣。您可以通过获取原始调用的所有参数并使用正版 Clojure 版本构造另一个宏调用来转发宏调用。

(defmacro defvar [& xs] `(def ~@xs))
(defmacro defun [& xs] `(defn ~@xs))
于 2017-09-22T10:37:12.360 回答