prolog - 附加元素满足特定条件以在 swi-prolog 中列出
问题描述
我想将满足某个谓词的所有元素附加到一个空列表中。我做了这样的事情:
fact(a).
fact(b).
fact(c).
append(list, E, R) :- fact(E),append([], [E], R).
但它没有用。
任何人都可以帮忙吗?
解决方案
Append/3 是一个预定义的谓词,你不能自己重新定义它。我想你想要一个包含所有事实的列表 R。所以,这是我的建议:
main(ListOfFacts) :-
bagof(Afact, fact(Afact) , ListOfFacts).
?- main(R).
R = [a,b,c].
Bagof/3 是一个预定义的谓词,其中参数 3 是参数 1 定义的所有值的列表,它在参数 2 中的谓词中成功。
有帮助吗?
推荐阅读
- r - 创建新文本参数时,带有 ggplotly 的 Stat-smooth 工具提示失败
- javascript - Javascript:查找所有网格列名称
- swiftui - SwiftUI:如何将字符串数组解析为文本
- python - 没有从python中的数据库获取数据
- python - Python:串行、线程、多处理。哪种方式最快?
- python - 如何修复我应该在不和谐服务器中发送垃圾邮件的命令
- swift - 比较字典键中的特定值
- javascript - 图形 API 不返回会议 ID
- mysql - 如何在mysql中创建存储过程?
- javascript - 在 javascript 中使用 jQuery.getJSON() 方法时的本地路径引用