6.9 Unit Contracts
| (unit/c (import sig-block ...) (export sig-block ...)) | 
|   | 
| sig-block |   | = |   | (tagged-sig-id [id contract] ...) |  |   |   | | |   | tagged-sig-id |  
  | 
A 
unit contract wraps a unit and checks both its imported and
exported identifiers to ensure that they match the appropriate contracts.
This allows the programmer to add contract checks to a single unit value
without adding contracts to the imported and exported signatures.
The unit value must import a subset of the import signatures and export a
superset of the export signatures listed in the unit contract.  Any
identifier which is not listed for a given signature is left alone.
Variables used in a given contract expression first refer to other
variables in the same signature, and then to the context of the
unit/c expression.
 | 
|   | 
| sig-spec-block |   | = |   | (tagged-sig-spec [id contract] ...) |  |   |   | | |   | tagged-sig-spec |  
  | 
The 
define-unit/contract form defines a unit compatible with
link inference whose imports and exports are contracted with a unit
contract.  The unit name is used for the positive blame of the contract.