traceの利用方法
テストとしてfuncを定義。
gosh> (define (func n) (+ n 3))
func
以下の命令を順に実行すれば、traceを利用出来る。
gosh> (use slib)
#<undef>
gosh> (require 'trace)
#t
gosh> (trace func)
#<closure (debug:trace-procedure debug:trace-procedure)>
gosh> (func 4)
CALL func 4
RETN func 7
7
printの利用方法
変数の中身を出力する。printを利用すれば良い。
(define (func n)
(print "n=" n)
(if (= n 0)
1
(* n (func (- n 1)))))
gosh> (func 5)
n=5
n=4
n=3
n=2
n=1
n=0
120
リーダーマクロの利用方法
出力したい場所の前に#?=を書くだけ。
(define (func n)
(if (= n 0)
1
(* n #?=(func (- n 1)))))
gosh> (func 5)
#?="(stdin)":336:(func (- n 1))
#?="(stdin)":336:(func (- n 1))
#?="(stdin)":336:(func (- n 1))
#?="(stdin)":336:(func (- n 1))
#?="(stdin)":336:(func (- n 1))
#?- 1
#?- 1
#?- 2
#?- 6
#?- 24
120