There's a fine trace macro in clojure.contrib.trace, which really can help when looking at recursive functions.
Here's a very simple example with our dear friend 'naive fibonacci'.
user> (defn fib [n] (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) #'user/fib user> (use 'clojure.contrib.trace) nil user> (dotrace (fib) (fib 3)) TRACE t1880: (fib 3) TRACE t1881: | (fib 2) TRACE t1882: | | (fib 1) TRACE t1882: | | => 1 TRACE t1883: | | (fib 0) TRACE t1883: | | => 0 TRACE t1881: | => 1 TRACE t1884: | (fib 1) TRACE t1884: | => 1 TRACE t1880: => 2 2 user>
No comments:
Post a Comment