traceディレクティブで関数呼び出しをトレースする
再帰がわかりにくい場合#traceで呼び出しをトレースできる、ということを知りました。
let rec sum lst = match lst with [] -> 0 | first :: rest -> first + sum rest let test1 = sum [1;2;3;4;5] = 15
#trace 関数名;;でトレースを開始して、#untrace 関数名;;で解除
# #trace sum;; sum is now traced. # sum [1; 2; 3; 4; 5] ;; sum <-- [1; 2; 3; 4; 5] sum <-- [2; 3; 4; 5] sum <-- [3; 4; 5] sum <-- [4; 5] sum <-- [5] sum <-- [] sum --> 0 sum --> 5 sum --> 9 sum --> 12 sum --> 14 sum --> 15 - : int = 15 # #untrace sum;; sum is no longer traced.