为 Clojure 宏定义同义词 [英] define a synonym for a Clojure macro
本文介绍了为 Clojure 宏定义同义词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
所以从 Clojure 宏开始创建同义词一个函数,我发现 def 不能用来定义宏的同义词.以下是我尝试过的 Clojure 不允许的示例.
So following on from Clojure macro to create a synonym for a function , I discovered that def can't be used to define a synonym for a macro. Below are examples I tried that Clojure doesn't allow.
;(def def-function defn)
;(def case cond)
;(def function fn)
是否可以在 Clojure 中为宏定义同义词/别名?是否需要使用 defmacro?
Is it possible to define synonyms/aliases for macros in Clojure? Would it require using defmacro?
推荐答案
可以使用宏:
user=> (defmacro def-function [& args] `(defn ~@args))
#'user/def-function
user=> (def-function g [] 2)
#'user/g
user=> (g)
2
或者你可以使用clojure.contrib.def/defalias
:
user=> (use 'clojure.contrib.def)
nil
user=> (defalias def-function defn)
#'user/def-function
user=> (def-function g [] 2)
#'user/g
user=> (g)
2
这篇关于为 Clojure 宏定义同义词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文