Итак, у меня есть база данных, которая выглядит примерно так:
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])].
Каким был бы самый чистый способ достичь этого?
Edit:
Мне кажется, я понял:
db_to_facts(L) :- findall(data(X),data(X),L).
Но если база данных пуста, она потерпит неудачу. Как сделать так, чтобы он возвращал пустой список?