I've been playing with Prolog recently and getting my head around how to represent some tasks I want to do with it, which are largely about having a database of facts and doing simple queries on it, joining multiple facts together.
But I want to use this is in a context where I'm writing Clojure. And it seems like core.logic should do what I want.
But I'm naively finding it difficult to see how to put basic Prolog predicates into core.logic.
For example, how should I represent something as simple as this in core.logic :
person(phil).
person(mike).
food(cheese).
food(apple).
likes(phil,apple).
likes(phil,cheese).
And a query like
food(F),person(P),likes(P,F)
Most introductions I can find are heavy on the logic programming but not the data representation.
core.logic
is based on minikanren which might be of use. – Guy Coder