私はDatomicクエリについて学び、「パラメータクエリ」の実行方法に興味がありました。
これは私が思いついたものです:
(d/q '[:find ?n ?x :where [?n :likes ?x] [(= ?x "pizza")]]
[['ethel :likes "sushi"]['fred :likes "pizza"]])
=> #<HashSet [[fred "pizza"]]>
これはそれですか、それとも上記を達成するためのより簡潔で慣用的な方法がありますか?
私はDatomicクエリについて学び、「パラメータクエリ」の実行方法に興味がありました。
これは私が思いついたものです:
(d/q '[:find ?n ?x :where [?n :likes ?x] [(= ?x "pizza")]]
[['ethel :likes "sushi"]['fred :likes "pizza"]])
=> #<HashSet [[fred "pizza"]]>
これはそれですか、それとも上記を達成するためのより簡潔で慣用的な方法がありますか?
答えは、 Datomicチュートリアルの「高度なクエリ」のセクションにあります
:in句を使用する
(d/q '[:find ?n ?x :in $ ?x :where [?n :likes ?x]]
[['ethel :likes "sushi"]['fred :likes "pizza"]] "sushi")
=> #<HashSet [[ethel "sushi"]]>
:in $ ?xはパラメータ句であり、末尾"sushi"はにバインドされています?x