-
-
Notifications
You must be signed in to change notification settings - Fork 311
Open
Description
Attempting to follow the Datomic Rules with required bindings documentation and discovered this bug in DataScript.
Here's a short example:
(d/q '[:find ?need
:in $ % ?name
:where (needs ?name ?need)]
'[["george" :wants :foo]
["george" :needs :foo]
["sally" :needs :bar]]
'[[(needs ?name ?need) [?name :needs ?need]]] "george")
;; => #{[:foo]} (expected)
;; Now try with ?name being a required binding by placing it in brackets
;; -- (needs ?name ?need) -> (needs [?name] ?need)
(d/q '[:find ?need
:in $ % ?name
:where (needs ?name ?need)]
'[["george" :wants :foo]
["george" :needs :foo]
["sally" :needs :bar]]
'[[(needs [?name] ?need) [?name :needs ?need]]] "george")
;; => #{[:foo :bar]} (incorrect)
It may be that the required binding version is always evaluating to true
.
Omni-Engineering, nikonikoniko and jjttjj
Metadata
Metadata
Assignees
Labels
No labels