2012-08-09 5 views
5

Tengo learning about Datomic queries y tenía curiosidad acerca de cómo hacer "consultas de parámetros".Consultas de parámetros en Datomic

Esto es lo que ocurrió:

(d/q '[:find ?n ?x :where [?n :likes ?x] [(= ?x "pizza")]] 
    [['ethel :likes "sushi"]['fred :likes "pizza"]]) 

=> #<HashSet [[fred "pizza"]]> 

Es esto, o hay una manera más concisa/idiomática de llevar a cabo lo anterior?

Respuesta

6

La respuesta está en la sección "Advanced Consultas" de la Datomic tutorial

Usa el :in cláusula

(d/q '[:find ?n ?x :in $ ?x :where [?n :likes ?x]] 
    [['ethel :likes "sushi"]['fred :likes "pizza"]] "sushi") 

=> #<HashSet [[ethel "sushi"]]> 

:in $ ?x es la cláusula de parámetro y el "sushi" de salida está obligado a ?x

Cuestiones relacionadas