我意識到宏觀俱樂部的第一條規則是不使用宏,所以下面的問題是在學習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