我刚开始自学Clojure。作为补充学习的一部分,我看了Brian Harvey关于函数式编程主题的一些UC Berkley讲座。在他的second lecture on functional programming,大约34分钟,他使用 applic 函数来显示评估顺序。 Clojure有类似的功能吗?当我努力理解为什么以及为什么这样做时,看到评估的顺序肯定会很方便。
答案 0 :(得分:8)
你可以在REPL中做到(由Mike Meyer在Clojure邮件列表中回答:Debugging in Clojure)
=> (use 'clojure.contrib.trace)
nil
=> (defn foo [coll] (reduce + coll))
#'web-db.core/foo
=> (defn bar [coll] (map inc coll))
#'web-db.core/bar
=> (dotrace [foo bar] (foo (bar [1 1 1])))
TRACE t3868: (bar [1 1 1])
TRACE t3868: => (2 2 2)
TRACE t3869: (foo (2 2 2))
TRACE t3869: => 6
6
还有Clojure调试工具包 (“关于如何使用它的可笑的长篇说明如下: http://georgejahad.com/clojure/emacs-cdt.html“)
某些IDE(如带有逆时针插件的Eclipse)允许调试:设置断点,查看本地人,进/出,......