如何在let
绑定内部打印值?
当我开始使用Clojure进行开发时,我会在REPL中编写代码,然后将其转换为简单的let
表达式。作为初学者,在这个(简单)转换阶段经常会犯错误。
(let [a (aFn ...)
b (bFn ... a)]
;; error above
)
所以我会将它转换回类似的形式,基本上是将事物内联起来:
(println "a is" (aFn ...))
(println "b is" (bFn ... (aFn ...)))
(let [a (aFn ...)
b (bFn ... a)]
;; ...
)
多亏了Clojure的良好特性(不可变性,引用透明等),这个功能大部分时间都是有效的。
现在我要做的事情差不多是:
(let [a (aFn ...)
_ (println "a is" a)
b (bFn ... a)
_ (println "b is" b)]
;; ...
)
这是一种改进,但仍然感觉笨拙。有没有更好的方法?
spy
本地绑定:http://brownsofa.org/blog/2014/08/03/debugging-in-clojure-tools/ - ClojureMostly