3 ms·
miniKanren is Turing-complete; Datalog deliberately isn't. Despite that, there are things Datalog can do easily that miniKanren can't. miniKanren can't handle
by rntz 8y ago
miniKanren is Turing-complete; Datalog deliberately isn't.
Despite that, there are things Datalog can do easily that miniKanren can't. miniKanren can't handle negation natively, but Datalog can (as long as it's stratified, that is, a predicate can't use its own negation).
Datalog is also forward-chaining, so some things that would infinite loop in miniKanren work fine in Datalog - for example, computing the transitive closure of a cyclic graph. If someone added tabling to miniKanren that would solve this.
There's also the question of performance. Some miniKanren implementations are surprisingly fast for what it does, but I suspect they can't compete with, say, Souffle, for the kind of static analysis workloads it's aimed at. Would love to be proven wrong, though.