我意识到宏观俱乐部的第一条规则是不使用宏,所以下面的问题是在学习Clojure的比什么都更打算作为一个练习(我意识到这不一定是最好的宏使用)。帮我写一个Clojure的宏观系统会自动添加元数据的函数定义
我想编写一个简单的宏,它作为一个常规的宏包装器,并添加一些元数据到定义的函数。所以,我想有这样的事情:
(defn-plus f [x] (inc x))
...拓展出这样的事:
(defn #^{:special-metadata :fixed-value} f [x] (inc x))
原则上,这似乎并没有那么难了我,但我无法正确解析定义函数中的[args]
和其他形式的细节。
作为奖励,如果可能的话我希望宏能够处理所有的DEFN的不同形式(即带或不带文档字符串,多个元数的定义,等等)。我在clojure-contrib/def
包中看到了一些看起来可能有用的东西,但很难找到使用它们的示例代码。
很好的介绍...主要道具为。 – Kekoa 2009-06-12 23:03:01
为什么不使用宏?你在想C预处理器吗? – Svante 2009-06-13 01:48:40