これは圏です(はてな使ったら負けだとおもっていた)

きっと何者にもなれないつぎの読者につづく。

変数凍結のしかたがわからない

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に代わるものってあるんですかね……