У меня есть следующий код в Clojure (с core.logic):Clojure core.logic найти всех участников, которые удовлетворяют всем предикатам?
(db-rel parent x y)
(db-rel go-to-school x y)
(def schools
(db
[parent 'Adam 'Ana]
[parent 'Adam 'Andre]
[parent 'Adam 'Alan]
[parent 'Bernard 'Bia]
[parent 'Bernard 'Beatrice]
[parent 'Carl 'Carlos]
[parent 'Carl 'Connie]
[go-to-school 'School1 'Ana]
[go-to-school 'School1 'Andre]
[go-to-school 'School2 'Alan]
[go-to-school 'School2 'Bia]
[go-to-school 'School2 'Beatrice]
[go-to-school 'School1 'Carlos]
[go-to-school 'School2 'Connie]))
То, что я хочу, чтобы найти всех родителей, где все дети ходят в ту же школу. Итак, работая над приведенным выше списком, мой ожидаемый доход будет ('Bernard)
, потому что его две дочери идут в «school2», где у каждого другого родителя есть хотя бы один ребенок, который не пойдет в одну школу других.
Возможно ли это с core.logic? Если да, то как я могу это сделать?
Я знаю это, мне было просто интересно, могу ли я сделать это, не используя другие функции Clojure. Причина в том, что я хотел применить эту проблему к огромному набору данных и посмотреть, будет ли core.logic быстрее, чем без него. –