Prologでは、リテラル間の同一性を意味する論理変数について話します。
つまり、プログラムとは、リテラルについて何が正しいかを集合的に述べる一連の規則であり、リテラルは解釈されないということです。個人に関する関係を記述するために変数を使用してルールを記述し、クエリが真になるかどうかを証明しようとする一方で、Prologはルールに従って変数をバインドします。
リストそれは、項 ( head ) と (ここでの再帰に注意してください)リストの間のバイナリ関係の単なる構文糖衣です。通常、データベースについて話すときは、アトミック リテラルをバインドするファクト (本体のないルール、常に true) を使用します。
そのため、そのチュートリアルは、おそらくあなたが報告したものとは異なる言葉でタスクを表現しているか、誤解を招く可能性があります. とにかく、データベースにリストを次のように保存できます。
mylist([a,b,c]).
次のようにプログラムを記述します。
myprog(X) :- mylist(L), member(X, L).
次に、次のようにプログラムをクエリできます。
?- myprog(X).
Prolog は、myprog/1 を証明しようとして、mylist/1とmember/2 を証明しようとしています... mylist(L) を証明するために、変数L は [a,b,c] にバインドされます。
HTH