/ GENTLE PRIMER
/ Describing Computations
of a predicate can fail for two reasons:
the predicate is not applicable for the given input values, or
the returned output values do not match the corresponding values
in the invocation.
IsJimsColor(yellow)This invocation will fail because IsJimsColor is only applicable for red. An invocation fails if there is no applicable rule.
JimsColor(-> yellow)This invocation will fail since JimsColor returns red which does not match yellow.
Failure does not mean error. As we shall see, it can be used to control predicate evaluation.