ユーザーが別の値を要求するたびにリストの最初の要素を返したい、つまりList = [1, 2, 3]
、プログラムが実行されると返されますが1
、;
が押されると (ユーザーが別の値を要求する) 2
、リストまで返されます。空です。
すべての値を一度に一覧表示することはできましたが、ここでの重要な問題は、ユーザーが別の値を必要とするかどうかをユーザーが決定できるようにするにはどうすればよいかということです。
これを行うだけです:
member( X, List ).
List
これにより、 on eachの次のメンバーが列挙されます;
。述語を呼び出すたびに、すべてのメンバーが使い果たされるまで、 List
inの次のメンバーがインスタンス化されます。X
はい、それを行う組み込み関数がありますが、Prolog をよりよく理解するには、自分で記述してみる必要があると思います。
each_one([A|_],A).
リストの要素の 1 つはそのヘッド要素です。
each_one([_|B],X):- each_one(B,X).
より多くの要素がリストの末尾にあります。これが再帰句です。
each_one([],_):- fail.
空のリストには要素がないので、何も書きません (同じ効果で書き込めますが)。
今すぐ試すことができます:
4 ?- each_one([1,2,3],X).
X = 1
Prolog は最初のソリューションを表示し、応答を待ちます。「;」を押します 続ける:
;
X = 2 ;
X = 3 ;
false.