有没有一种方法可以逐步显示Clojure是如何计算函数的?
我刚开始自学Clojure。作为补充我研究的一部分,我观看了布赖恩·哈维(Brian Harvey)在加州大学伯克利分校(UC Berkley)的几场关于函数式编程的讲座。在his中,大约在第34分钟,他使用applic函数显示评估顺序。Clojure有类似的功能吗?在我努力理解原因和原因时,查看评估顺序肯定会很方便。您可以在REPL中执行(Mike Meyer在Clojure邮件列表中的回答:) 还有Clojure调试工具包 (“关于如何使用它的冗长说明如下: ))有没有一种方法可以逐步显示Clojure是如何计算函数的?,clojure,applicative,Clojure,Applicative,我刚开始自学Clojure。作为补充我研究的一部分,我观看了布赖恩·哈维(Brian Harvey)在加州大学伯克利分校(UC Berkley)的几场关于函数式编程的讲座。在his中,大约在第34分钟,他使用applic函数显示评估顺序。Clojure有类似的功能吗?在我努力理解原因和原因时,查看评估顺序肯定会很方便。您可以在REPL中执行(Mike Meyer在Clojure邮件列表中的回答:) 还有Clojure调试工具包 (“关于如何使用它的冗长说明如下: )) 还有一些IDE(比如带有逆
还有一些IDE(比如带有逆时针插件的Eclipse)允许调试:设置断点、查看局部变量、步进/步出 跟踪库的问题在于它不支持内置操作符,如
+
。。。我记得,它是更高级的追踪器,但记不起它的名字了
=> (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