Racklog objects are the same as Racket objects. However, there are two subsets of these objects that are of special interest to Racklog: goals and predicates. We will first look at some simple goals. Predicates will introduce predicates and ways of making complex goals using predicates.
A goal is an object whose truth or falsity we can check. A goal that turns out to be true is said to succeed. A goal that turns out to be false is said to fail.
(The names of all Racklog primitive objects start with %. This is to avoid clashes with the names of conventional Racket objects of related meaning. User-created objects in Racklog are not required to follow this convention.)
A Racklog user can query a goal by wrapping it in a %which-form.
evaluates to (), indicating success, whereas:
evaluates to #f, indicating failure.
Henceforth, we will use the notation:
to say that E evaluates to F. Thus,