[][src]Module canrun::goal

Make declarative assertions about the 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 goal constructors.

While State exposes a lower level API, in practice there really shouldn't be anything that can't be expressed using goals.

Modules

project

Goals that deal with resolved values.

Macros

all

Create a goal that only succeeds if all sub-goals succeed.

any

Create a goal that yields a state for every successful sub-goal.

Structs

Goal

A container of one of many possible types of goals.

Functions

both

Create a goal that only succeeds if both sub-goals succeed.

custom

Create a goal that gives access to the underlying State struct.

either

Create a goal that succeeds if either sub-goal succeed.

lazy

Create a goal that is generated via callback just as it is about to be evaluated.

unify

Create a goal that attempts to unify two values with each other.