I could easily be missing something, but to my current understanding, the intended behavior between the two code snippets below should be identical. ```clojure (d/q '[:find ?int :in ?intersection :where [(?intersection #{:a :b :c} #{:c :d :e}) ?int]] clojure.set/intersection)) ;; => #{[#{:c}]} (d/q '[:find ?int :in % ?intersection :where (intersection-rule #{:a :b :c} #{:c :d :e} ?int)] '[[(intersection-rule ?s ?t ?int) [(?intersection ?s ?t) ?int]]] clojure.set/intersection)) ;; => Execution error (ExceptionInfo) at datascript.query/bind-by-fn (query.cljc:546). ;; Unknown function '?intersection__auto__1 in [(?intersection__auto__1 #{:c :b :a} #{:e :c :d}) ```
Activity
[-]Function input not evaluated in rules[/-][+]Function Input not Evaluated in Query Rules[/+]tonsky commentedon Aug 6, 2019
Yes, seems like a bug here
datascript/src/datascript/query.cljc
Lines 580 to 586 in f18db4e
It tries to rename rule vars based on if symbol starts with a
?, not on actual arguments listMyriaCore commentedon Aug 6, 2019
Wow, thanks for the quick response! I thought I was just doing something wrong.
Is there a workaround for the time being?
tonsky commentedon Aug 6, 2019
you can try explicitly pass fn as an argument to the rule. Might work, might not
MyriaCore commentedon Aug 7, 2019
Alright, that seems to work. Thanks!