0

私はPrologが初めてで、学びたいと思っていました。事実を繰り返しながらリストを作成しようとしてきましたが、作成されたリストが更新されてデータが失われました。データを保持し、要素をリストに追加するにはどうすればよいですか?

funct(a,b,1).
funct(b,c,2).
funct(b,d,3).

creatingList(X,Y,R):- funct(X,Y,A), funct(Y,Z,B), \+member(B,R) , append(R,B,R).

私はそれを試しましたが、トレースするとR = [1,2,3]であると予想されるデータが失われ続けます。

4

1 に答える 1

3

@ユーザーは正しいです:

?- findall(funct(X,Y,Z), funct(X,Y,Z), Functs).
Functs = [funct(a, b, 1), funct(b, c, 2), funct(b, d, 3)].

setof/3も適用される可能性がありbagof/3ますが、そのセマンティクスはもう少し複雑です。

于 2013-04-17T14:11:27.597 に答える