As others said, a boolean is a distinct data type from a procedure that returns a boolean. Usually the former suffices but there do exist use cases for the latter.
Here are two examples I've seen:
1) Suppose you are unit testing filter (
http://wiki.call-cc.org/man/4/Unit%20srfi-1#filtering-partitioning ) or a similar procedure. To be thorough, you ought to test the case where each element of the original list is retained so the output list has the same contents as the input list. You can get this behavior by using any? as the predicate passed to filter.
) are defined by predicate procedures. For example, the contract for the + procedure might be that it takes two or more arguments that each satisfy number? and returns an object that satisfies number?. It's convenient here to have any? (or equivalent) so you can define a contract that allows for anything. For example the contract for number? is that it takes one object satisfying any? and returns a boolean?.