MiniKanren run
run
takes in 3 arguments.
n
-> inclusive limit for number of results. q
-> What we bind the results to if all the goals succeed goals
-> A collection of goals.
run*
is used to refer to run with unbounded n
.
It returns a goal: Either success (true
) or failure (false
).
Examples
q
is associated with #t
here, since all other goals (#s
) succeed.
(run* (q)
#s
(== #t q))
r is associated with corn
, (corn
here is a value)
(run* (q)
#s
(== corn q))