Static analysis of a parsed query, independent of any query engine.
A clause such as [(> ?a 18)] cannot run before something binds ?a, but
the order in which the clauses are written does not matter, because an engine
is free to reorder them. What does matter is whether any order can work at
all, and that question is decidable from the parsed query alone.
Static analysis of a parsed query, independent of any query engine. A clause such as `[(> ?a 18)]` cannot run before something binds `?a`, but the order in which the clauses are written does not matter, because an engine is free to reorder them. What does matter is whether any order can work at all, and that question is decidable from the parsed query alone.
(assert-satisfiable parsed-query)Returns the parsed query, or raises when a clause needs a variable that no ordering of the query can bind.
Returns the parsed query, or raises when a clause needs a variable that no ordering of the query can bind.
(bindable-vars parsed-query)The variables of a parsed query that some ordering of its clauses can bind,
as a set of symbols. Everything the :where clauses use beyond these is
unbindable, whatever the engine does.
The variables of a parsed query that some ordering of its clauses can bind, as a set of symbols. Everything the `:where` clauses use beyond these is unbindable, whatever the engine does.
(unsatisfiable-clauses parsed-query)The clauses of a parsed query that no ordering can ever run, as a vector of
{:clause <parsed clause>, :form <as written>, :missing #{symbols}}. Empty
when the query is satisfiable.
The clauses of a parsed query that no ordering can ever run, as a vector of
`{:clause <parsed clause>, :form <as written>, :missing #{symbols}}`. Empty
when the query is satisfiable.cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |