Declarative relationships between values.
Goals provide a high level interface for defining logic
programs. They are composable, with many higher level goals being made
up of lower level primitives. Since the typical way of using goals are
through simple functions, it is easy to build and reuse custom, first class
State exposes a lower level API, in practice there really
shouldn’t be anything that can’t be expressed using goals.
Most structs that implement
Goal are constructed with one of the many
constructor functions and
macros. These high level methods provide automatic
Value wrapping through
and other niceties.
Goalrepresent declarative, lazily applied state updates.