Behaviour for pluggable Datalog evaluation backends.
An engine takes a compiled IR program and evaluation options, then produces
a result containing all derived facts. The default engine is
ExDatalog.Engine.Naive, which implements semi-naive fixpoint evaluation.
Summary
Types
@type ir() :: ExDatalog.IR.t()
@type opts() :: keyword()
@type reply() :: {:ok, ExDatalog.Result.t()} | {:error, term()}