我在 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 可行吗?如果是这样,我该怎么做?