Prologの技芸第二版を片手にPrologの勉強をしているのだけど、
P.197 で紹介されている
% occurs_in(Sub, Term) :- Sub は項 Term の部分項である. occurs_in(X, Term) :- freeze(X, Xf), freeze(Term, Termf), subterm(Xf, Termf).
のプログラムが動かない。処理系はSWI-Prologをつかっている。
エラーを見たところ、freezeの挙動が、TAOP で紹介されているものと違うっぽい。
TAOP では、『freeze(X,Xf)は変数Xの凍結されたものXfを生成する』みたいなことを書いてあって、でも調べると今のfreezeはfutureみたいなことをやってるようで、TAOPの freezeに代わるものってあるんですかね……