### 7Contracts

 (require (planet cce/scheme:6:1/contract))

This module provides useful contracts and contract constructors.

#### 7.1Flat Contracts

 nat/c : flat-contract?
This contract recognizes natural numbers that satisfy exact-nonnegative-integer?.

 pos/c : flat-contract?
This contract recognizes positive integers that satisfy exact-positive-integer?.

 truth/c : flat-contract?
This contract recognizes Scheme truth values, i.e., any value, but with a more informative name and description. Use it in negative positions for arguments that accept arbitrary truth values that may not be booleans.

#### 7.2Higher-Order Contracts

 thunk/c : contract?
 unary/c : contract?
 binary/c : contract?
These contracts recognize functions that accept 0, 1, or 2 arguments, respectively, and produce a single result.

 predicate/c : contract?
 predicate-like/c : contract?
These contracts recognize predicates: functions of a single argument that produce a boolean result.

The first constrains its output to satisfy boolean?. Use predicate/c in positive position for predicates that guarantee a result of #t or #f.

The second constrains its output to satisfy truth/c. Use predicate-like/c in negative position for predicates passed as arguments that may return arbitrary values as truth values.

 comparison/c : contract?
 comparison-like/c : contract?
These contracts recognize comparisons: functions of two arguments that produce a boolean result.

The first constrains its output to satisfy boolean?. Use comparison/c in positive position for comparisons that guarantee a result of #t or #f.

The second constrains its output to satisfy truth/c. Use comparison-like/c in negative position for comparisons passed as arguments that may return arbitrary values as truth values.