対応するリストから値を比較して取得しようとしています。リストと要素の比較
V1
が最初のリスト
Xs
でチェックされ、そして
Ys
で対応する値を返すために
V2
に与えられている
?- correspond_elements(a, [a,b,b,a], X, [1,2,3,4]).
X = 1;
X = 4.
:私の述語は、私は次のような動作を期待correspond_elements(V1, Xs, V2, Ys)
、です。私は->
句が真なると、その後、;
後に何が実行されていないことを知っている
?- correspond_elements(a, [a,b,b,a], X, [1,2,3,4]).
X = 1.
:最初の値のみを取得し
% checks if the argument is a list
is_list([]).
is_list([_|T]) :-
is_list(T).
% predicate
correspond_elements(V1, [X|Xs], V2, [Y|Ys]) :-
is_list([X|Xs]),
is_list([Y|Ys]),
(V1 == X ->
V2 is Y
;
correspond_elements(V1, Xs, V2, Ys)
).
:これまでのところ私はこれを持っています。私のコードはX
の最初の答えを取得して停止することは明らかですが、最初の答えが見つかった後でも、リストを再帰させ、X
のすべての可能な回答を返す方法は不明です。あなたが自分自身を発見してきたように
ありがとう、私はちょうどプロローグの考え方に問題があると思います。これは、多くのおかげで、クリア:)。 – RoadRunner