【发布时间】:2019-01-24 15:45:59
【问题描述】:
所以我有一个看起来像这样的数据库:
DB = [
data([table, keyboard,cup, box,watch]),
data([green,red, yellow,white,blue]),
data([alex, john,sasha, sabrina, ben]),
data([coffee, tea, syrup, vodka, beer]),
data([bookA, bookB, bookC, bookD, bookE])
]
我想将DB 保存为事实。然后我们应该创建一个关系db_to_facts,它可以找到所有的事实。
例子:
data([true, false]).
data([dog,cat]).
输出:
db_to_facts(DB).
DB = [data([true, false]), data([dog, cat])].
实现它的最干净的方法是什么?
编辑:
我想我明白了:
db_to_facts(L) :- findall(data(X),data(X),L).
但是如果数据库是空的,它就会失败。如何让它返回空列表?
【问题讨论】:
标签: prolog