32
我在瀏覽Clojure的來源,我的方式感到驚訝時,宏定義:的Clojure當宏觀
user=> (source when)
(defmacro when
"Evaluates test. If logical true, evaluates body in an implicit do."
{:added "1.0"}
[test & body]
(list 'if test (cons 'do body)))
nil
user=>
我期待它寫成這樣的事情,而不是:
(defmacro when [test & body] `(if ~test (do [email protected])))
爲什麼用這種不太常見的方式編寫實際的宏?
我希望我有更多向上票給這個。 – 2012-08-04 00:20:06
680行似乎是defmulti宏。和語法引號(我假設)是一個讀者宏。你能詳細說明語法引用需要什麼函數/宏嗎? – Kevin 2012-08-04 18:15:11
凱文,你爲什麼不跟着這些行號後面的鏈接。在682行或附近沒有'defmulti',所以你可能正在看這個文件的其他版本。至於語法引用需要什麼,它很簡單:**在此特定版本的文件中定義在行682 **之上的所有內容。 – 2012-08-09 19:22:29