2016-11-17 11 views
2

私はguile関数のトレースを使用しようとしていますが、毎回、私は可能なアンバインド変数を取得します。バインドされていない変数 'trace'

[email protected](guile-user)> (define (fact1 n) 
(if (zero? n) 1 
(* n (fact1 (- n 1))))) 
[email protected](guile-user)> (trace fact1) 
;;; <stdin>:4:0: warning: possibly unbound variable `trace' 
<unnamed port>:4:0: In procedure #<procedure 10e4080c0 at <current input>:4:0()>: 
<unnamed port>:4:0: In procedure module-lookup: Unbound variable: trace 

Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. 
[email protected](guile-user) [1]> 

なぜこれが機能しないのか分かりませんでしたか?

+0

ガイルはデフォルトで含ま 'trace'機能を持っていません。しかし、['(ice-9 debug)'](https://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Tracing.html)モジュールには1つのモジュールが含まれているようです。ガイレで「痕跡」が働くと思うようになった何かを見ましたか? –

+0

私のインストラクターは、私たちにその事例を教えてくれました。 – AmaCode

+0

さて、まず 'trace'をインポートするには'(use-modules(ice-9 debug)) 'を使う必要があります。 –

答えて

2

使用,trace

GNU Guile 2.0.12 
Copyright (C) 1995-2016 Free Software Foundation, Inc. 

Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. 
This program is free software, and you are welcome to redistribute it 
under certain conditions; type `,show c' for details. 

Enter `,help' for help. 
[email protected](guile-user)> (define (fact1 n) 
... (if (zero? n) 1 
... (* n (fact1 (- n 1))))) 
[email protected](guile-user)> ,trace (fact1 5) 
trace: | (#<procedure 110221480> #(#<directory (guile-user) 10f9fabd0> #f)) 
trace: | #(#<directory (guile-user) 10f9fabd0> fact1) 
trace: (#<procedure 11022e1e0 at <current input>:2:0()>) 
trace: (fact1 5) 
trace: | (fact1 4) 
trace: | | (fact1 3) 
trace: | | | (fact1 2) 
trace: | | | | (fact1 1) 
trace: | | | | | (fact1 0) 
trace: | | | | | 1 
trace: | | | | 1 
trace: | | | 2 
trace: | | 6 
trace: | 24 
trace: 120 
関連する問題