なんにせよ、プログラミングにデバッグはつきもの。
先人の知恵をリンク。
Debugging in Clojure
http://stackoverflow.com/questions/2352020/debugging-in-clojure
トレースの使い方
(use 'clojure.contrib.trace) (defn fib[n] (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) (dotrace [fib] (fib 3)) ; for Clojure1.2 (use 'clojure.contrib.trace) (defn fib[n] (if (< n 2) n (+ (#'fib (- n 1)) (#'fib (- n 2))))) (dotrace [fib] (fib 3))
debugマクロ
I have a little debugging macro that I find very useful: ;;debugging parts of expressions (defmacro dbg[x] `(let [x# ~x] (println "dbg:" '~x "=" x#) x#)) You can insert it wherever you want to watch what's going on and when: ;; Examples of dbg (println (+ (* 2 3) (dbg (* 8 9)))) (println (dbg (println "yo"))) (defn factorial[n] (if (= n 0) 1 (* n (dbg (factorial (dec n)))))) (factorial 8) (def integers (iterate inc 0)) (def squares (map #(dbg(* % %)) integers)) (def cubes (map #(dbg(* %1 %2)) integers squares)) (take 5 cubes) (take 5 cubes)
debug-repl
https://github.com/GeorgeJahad/debug-repl
実行時に値を表示してくれる。