úÎ1¿/(      !"#$%&'None!8Class of all flat types, for which contract prop works. 3A type is flat if its only partial value is bottom / undefined. C In other words: an expression of the type is either unevaluted or 6 fully evaluated, never properly partially evaluated. The contract type. Different contract partners. 0 For any violated contract a partner is blamed. +The exception raised when a contact fails. 'Connect a contract with an expression. B The resulting expression is the same except that the contract is  monitored for it at runtime. K assert splices in code that adds the current location in the module file. ! $assert :: Contract a -> a -> a 'Same as assert with arguments swapped. @ Useful for attaching contracts in simple variable definitions:  fun' = $attach fun contract ! $attach :: a -> Contract a -> a Conjunction of two contracts. 3Disjunction of contracts, given priority to first. Contract that always succeeds. 0Contract that always fails, blaming the client. LFunction contract combinator, taking contracts for pre- and post-condition. (Dependent function contract combinator. 6 The post-condition also takes the function argument.  Warning: This combinator does not protect laziness! HDrop context information in a contract to avoid unbound context growth. $ Can be wrapped around any context. !For a given algebraic data type 1 declare pattern contracts for all constructors. : The argument must be the name of an algebraic data type.  E.g. $(deriveContracts ''Either) (Pattern contract for given constructor. 6 The argument must be the name of a data constructor.  E.g.  $(p 'Left) 2Negated pattern contract for a given constructor. 6 The argument must be the name of a data constructor.  E.g.  $(pNot 'Left) Contract for empty list. (Contract combinator for non-empty list.  Cf. (:) :: a -> [a] -> [a] Alternative name for . Contract for non-empty list. 3Contract for not non-empty list, i.e., empty list. CContract combinator for list with elements meeting given contract. KContract combinator for IO-monad with return value meeting given contract. Contract for empty tuple. CContract combinator for tuple with values meeting given contracts. !EContract combinator for 3-tuple with values meeting given contracts. "EContract combinator for 4-tuple with values meeting given contracts. #)Contract combinator for data constructor ( $ with value meeting given contract. $Contract for data constructor ). %Contract for non-) value. &Contract for non-( value. 'Contract combinator for type * . given contract for possible argument value. +FThis instance is missing in Template Haskell; needed for quote above. 2  !"#$%&',-./01+234(  !"#$%&'(   !"$#%&'*  !"#$%&',-./01+2345      !"#$%&'()*()+(),-./01234567 Contract-0.1Development.ContractFlatpropContractPartnerClientServerContractFailedculpritloc explanationassertattach&|>truefalse>->>>-> dropContextderiveContractsppNotpNilpCons=:pNotNilpNotConslistiopTuple0pTuple2pTuple3pTuple4pJustpNothing pNotNothingpNotJustmaybebase Data.MaybeJustNothingMaybe $fLiftLoc $fFlatBool $fFlatChar $fFlatDouble $fFlatFloat $fFlatInteger $fFlatInt $fShowPartner$fExceptionContractFailed$fShowContractFailed