我想编写一个宏,使用来自clj-time库的函数。在一个命名空间中,我想这样调用宏:
(ns budget.account
(:require [budget.time]))
(budget.time/next-date interval frequency)
下一个日期宏将在另一个文件中定义,如下所示:(ns budget.time
(:require [clj-time.core :as date]))
(defmacro next-date [interval freq]
`(~interval ~freq))
如果使用以下参数(budget.time/next-date interval freq)调用宏,并且interval和freq分别是"weeks"和"2",那么宏展开看起来应该像这样(clj-time.core/weeks 2)。每当我在REPL中尝试时,它无法解析命名空间。
是否有一种方法可以强制宏将interval解析为clj-time命名空间的参数?最好的方法是什么?
谢谢!