簡體   English   中英

Prolog-通過迭代事實創建列表

[英]Prolog - Creating a list by iterating facts

我是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]。

@User是正確的:

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

setof/3bagof/3可能也適用,但是它們的語義稍微復雜一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM