4

プロローグプログラムをトレースするときに2番目のステップに進む方法は? たとえば、次の単純なプログラムをトレースしたいとします。

length1([],0).
length1([_X|Xs],N):- length1(Xs,N1), N is N1+1.

私はプログラムをトレースします:

?- trace,length([1,2,3],N).
Call: (7) length([1, 2, 3], _G231) ? 
Exit: (7) length([1, 2, 3], 3) ? creep
N = 3.

しかし、ご覧のとおり、すぐに答えが返ってきます。しかし、私はそれが次のようであるべきだと思っCall:(8) ... Call:(9) ...

4

2 に答える 2

6

目標を見ると、length/2独自の ではなく、組み込みの を使用しましたlength1/2。ビルトインは通常、トレースできません。

于 2012-07-06T06:01:56.343 に答える
1

ファイルをコンパイルした後 (例 [length_program]. )、トレースを書き込む必要があります。コマンドを実行しますが、コードのスペルが間違っていると思います。pred を length1 として定義したので、トレースの後に正確に length1 を入力する必要があります

于 2012-07-06T14:25:07.687 に答える