Skip to content

Instantly share code, notes, and snippets.

@eraserhd
Created December 21, 2018 14:30
Embed
What would you like to do?
;; Because in formal logic, ∀x.P(x) = ¬∃x.¬P(x)
(d/q '[:find ?id
:in $ [?interest ...]
:where
[?a :account/id ?id]
(not-join [?a ?interest]
[?a :account/interest ?i]
(not [(= ?i ?interest)]))])
;; It is harder to understand when you bind interest as above if you
;; are thinking in terms of iterative binding (but it still should
;; work!) If you make 'interests' a data source, it looks like this:
(d/q '[:find ?id
:in $ $interests
:where
[?a :account/id ?id]
(not-join [?a]
[?a :account/interest ?i]
(not [$interests ?i]))]
db
(map vector interests))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment