Clojure函数用于打印符号名称和符号值

时间:2011-11-23 19:10:50

标签: clojure

我一直在努力寻找答案或制定解决方案。我试图找出如何在Clojure中创建代码的代码。对于我的第一个专长,我想要一个函数,它将打印到stdout符号的名称及其值,对调试很有用。例如:

(def mysymbol 5)
(debugging-function mysymbol)

mysymbol: 5

这有意义吗?谢谢你的帮助。

发布讨论更新

以下是@amalloy的答案:

(defmacro ?
"A useful debugging tool when you can't figure out what's going on:
wrap a form with ?, and the form will be printed alongside
its result. The result will still be passed along."
[val]
`(let [x# ~val]
    (prn '~val '~'is x#)
    x#))

所以: (? myvariable)

1 个答案:

答案 0 :(得分:6)

您可以看到我写的on github的简单版本。重点是你不能用一个函数做到这一点,但是使用宏它很简单 - 你只需要正确引用和取消引用。