【发布时间】:2014-06-20 17:42:18
【问题描述】:
我正在研究一些来自 braveclojure 的 clojure 示例:
http://www.braveclojure.com/writing-macros/
目前我正在尝试执行此操作
(ns turtle (:use clojure.pprint))
(def criticisms {:good "good code:" :bad "bad code:"})
(defn criticize-code
[[critkey code]]
`(println (~critkey criticisms) (quote ~code)))
(defmacro code-critic
[code-evaluations]
`(do ~@(map criticize-code code-evaluations)))
(println "executed code critic")
(code-critic {:good (+ 1 1) :bad (1 + 1)})
(println "code critic expansion")
(pprint (macroexpand '(code-critic {:good (+ 1 1) :bad (1 + 1)})))
;why isn't this executing?
(println "criticize code expansion")
(criticize-code [:good '(+ 1 1)])
基本上,我可以通过println 验证criticize-code 返回格式正确的代码;但我实际上无法执行它...有人可以告诉我我做错了什么吗?
谢谢!
【问题讨论】: