定义 Clojure 宏的同义词 [英] define a synonym for a Clojure macro

查看:23
本文介绍了定义 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆