gaucheでtraceを使う

内部リンク


Gauche:FAQ
の項目「Q. INSTALL.eucjpの通りにconfigureしたのに、エラーによりSLIBが実行できないのですが。」
に書かれている以下の方法を実行してmakeしなおしたら使えるようになりました。

# ./configure --with-slib=/usr/share/umb-scheme/slib
# make
# make install

木構造をランダムに作るコードでtraceを実験


traceを実行した例

gosh> (use slib)
#<undef>
gosh> (require 'trace)
(trace alist qp bignum complex real rational inexact vicinity source 
rev5-report eval values dynamic-wind macro delay multiarg-apply 
char-ready? rev4-optional-procedures rev4-report ieee-p1178 multiarg/and- 
with-file ieee-floating-point full-continuation defmacro record 
string-port sort object->string system getenv program-arguments 
current-time byte)
gosh> (load "./random-tree.scm")
#t
gosh> (trace create-individual-program)
#<closure (debug:trace-procedure debug:trace-procedure)>
gosh> (create-individual-program allowable-depth top-node-p full-p)
CALL create-individu... 5 #f #t
 CALL create-individu... 4 () #t
  CALL create-individu... 3 () #t
   CALL create-individu... 2 () #t
    CALL create-individu... 1 () #t
    RETN create-individual-program (car j)
    CALL create-individu... 1 () #t
    RETN create-individual-program (define a y)
   RETN create-individual-program (cons (car j) (define a y))
   CALL create-individu... 2 () #t
    CALL create-individu... 1 () #t
    RETN create-individual-program (cdr d)
   RETN create-individual-program (car (cdr d))
  RETN create-individual-program (define (cons (...) ...) (car (cdr ...)))
 RETN create-individual-program (car (define (cons ...) (car (cdr ...))))
RETN create-individual-program (list? (car (define (cons ...) (car ...))))
(list? (car (define (cons (car j) (define a y)) (car (cdr d)))))