katsu #1251(2007/07/21 07:33 GMT) [ Prolog ] Rating2/2=1.00
処理系依存、ですよ。 write('')みたいな副作用でもしないと、最適化で「呼び出し」が無かったことになっちゃうので、そうしています。 実行例 $ pl -qs stack.pl aaa(**) bbb(**) ?-
1 2 3 4 5 6
aaa(X):-whoami(X),write(''). bbb(X):-whoami(X),write(''). whoami(X):-prolog_current_frame(F),prolog_frame_attribute(F,parent,X0),prolog_frame_attribute(X0,goal,X). :-aaa(Xa),writeln(Xa),bbb(Xb),writeln(Xb).
Rating2/2=1.00-0+
[ reply ]
katsu
#1251()
[
Prolog
]
Rating2/2=1.00
処理系依存、ですよ。 write('')みたいな副作用でもしないと、最適化で「呼び出し」が無かったことになっちゃうので、そうしています。 実行例 $ pl -qs stack.pl aaa(**) bbb(**) ?-aaa(X):-whoami(X),write(''). bbb(X):-whoami(X),write(''). whoami(X):-prolog_current_frame(F),prolog_frame_attribute(F,parent,X0),prolog_frame_attribute(X0,goal,X). :-aaa(Xa),writeln(Xa),bbb(Xb),writeln(Xb).Rating2/2=1.00-0+
[ reply ]