私は以前に Prolog を学んだことがありますが、Mercury 言語の完全な初心者です。水星の新しい側面の 1 つは、脱皮症です。main
関数は決定論的でなければなりません。そのためには、変数が値に統合/バインドされているかどうかを確認する必要がありますが、その方法が見つかりません。特にコードを参照してください。
main(!IO) :-
mother(X,"john"),
( if bound(X) <-----this is my failed try; how to check if X is unified?
then
io.format("%s\n", [s(X)], !IO)
else
io.write_string("Not available\n",!IO)
).
そのようなmain
ものは失敗することはありませんでした。つまり、決定論的制約を満たします (私は推測します)。問題は、変数がバインドされているかどうかを確認する方法です。