有没有办法逐步显示Clojure如何评估函数?

mul*_*son 9 clojure applicative

我刚刚开始自学Clojure.作为补充我的学习的一部分,我观看了Brian Harvey关于函数式编程主题的一些UC Berkley讲座.在他关于函数式编程的第二次讲座中,大约在第34分钟,他使用applic函数来显示评估顺序.Clojure有类似的功能吗?当我努力理解为什么以及为什么这样做时,看到评估的顺序肯定会很方便.

zmi*_*ila 8

您可以在REPL中完成(在Clojure邮件列表中由Mike Meyer回答:在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
Run Code Online (Sandbox Code Playgroud)

还有Clojure调试工具包("关于如何使用它的可笑的长指令在这里:http: //georgejahad.com/clojure/emacs-cdt.html ")

而一些IDE(如带有逆时针插件的Eclipse)允许调试:设置断点,查看本地人,进/出,......