HOOGגb=>_#$a  "')..48==@@b  ""((56c --AAd!!')..3368e $&&((+-/0235<AAf #$&&88g ##))h##''--<<i  !--//3388::==?@k%%--99l #''**005588;;==??m  ))++44n  #$&&..12::@@o  !#,669:>>AAp''*,44::q--r  !!')+,.266;=@As  !#$/02;??t  !#$((+,00224Au  --0277;;??v ==@Aw>>x77y  **,,z//33~$s()->rALPHA_nAllMAny,ArithExceptionArrayExceptionAsyncExceptionBETA_Bool BufferMode BufferStateCCharYCClock'CDevCDoubleCFloatCCInoCIntCIntMaxkCIntPtr#CLDoubleCLLongCLong:CModeCOffCPidbCPtrdiffCSCharCShort CSigAtomicBCSizeCSsizeCTimeCUChar8CUIntCUIntMaxCUIntPtr`CULLongCULongCUShortCWchar@Chan5CharComplex ConsoleEventConstr ConstrRepDataRepDataTypeDouble#DynamicE12E6Errno ExceptionExitCodeFDTypeFdFixityFloatGAMMA_GenGeneralCategoryHandle HandlePosn HandleTypeHashDataIO IOErrorType IOExceptionIOModegIdRInsertsNIntInt16Int32JInt64Int8IntPtr`IntegerLexemeMaybe OrdALPHA_OrdBETA_ OrdGAMMA_OrderinglP[PropertyQQSemGQSemN=ReadP$ReadPrec ResultSTMSeekMode StableNameStdGenTVarThreadIdTimeout{TyConuTypeRepoUniquegVersionLWeakAWord Word16 Word32N Word64 Word8 WordPtrd ZipListO [::]@ []  TraversableFoldableMonadFix Applicative Alternative MonadPlusFunctorMonadFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdNumEnumIntegralBitsShowRealBoundedIxRead PrintfArgStorableDataNumEnumIntegralBitsShowRealBoundedIxReadOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq Typeable1EqOrdShowReadTypeableOrdEqDataDataEqTypeableDataShowEqOrdTypeable Typeable1 RandomGenShowRead Typeable1ShowReadEnumIxOrdEq Typeable1FunctorMonadTestableFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableTestableMonad MonadPlus MonoidDataReadShowBoundedEnumIxOrdEqOrdEqOrdEqOrdEq TraversableFoldableMonadFix Applicative AlternativeFunctorMonad MonadPlusShowEqRead Arbitrary PrintfArgBitsDataReadEqOrdNumEnumShowIxRealIntegralRandom ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdShowNumEnumIntegralReadBitsRealBoundedIx PrintfArgStorableDataShowNumEnumIntegralReadBitsRealBoundedIxOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq Arbitrary PrintfArgBitsStorableDataReadShowNumBoundedEnumIxRealIntegralEqOrdRandomEqFunctor ApplicativeShowReadEnumIxOrdEqEqShowEqShowMonadFix ApplicativeFunctorMonadShowEqShowEqShowDataEqShowIxBoundedShowReadEnumOrdEqFunctorMonadEq Arbitrary PrintfArgStorableDataEqOrdNumReal FractionalRealFracFloating RealFloatShowEnumReadRandomShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEqShowEqEq HasResolution HasResolutionTypeableShow Arbitrary PrintfArgStorableDataEqOrdNumReal FractionalFloatingRealFrac RealFloatShowEnumReadRandomTypeableDataShowShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1 PrintfArgIsCharStorableDataReadShowBoundedEnumIxEqOrdRandom Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEq ArbitraryTestableStorableDataReadShowBoundedEnumIxOrdEqRandomEqShowOrdEqShowOrdEqShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqEqArrow ArrowChoice ArrowApply ArrowLoop ArbitraryTestableMonoidDataReadShowBoundedEnumIxEqOrd:ALPHA$BETA$ ByteCount$CDir$CDirent$CFLock$CGroup$CLconv$CPasswd$ CSigaction$CSigset$CStat$CStringv$ CStringLen[$CTermiosV$CTmQ$CTmsL$CUtimbufG$CUtsnameB$CWString2$ CWStringLen$ ClockTick $ConIndex$DeviceID$ EpochTime#FD#FileID#FileMode# FileOffset#FilePath#FinalizerEnvPtr# FinalizerPtrx#GAMMAg#GenericW#GenericBS#GenericMC#GenericQ8#GenericR-#GenericT$#HandlePosition#IOError #IPr"Limit"Micro"OrdALPHA"OrdBETA"OrdGAMMA"Pico"Prec"ProcessGroupID" ProcessID"Rationals" RawBufferR"ReadS%"STRep! SampleVar!ShowS!String![]Char[]Char[]CharaMVar(,)IntMVarasaState#s(#,#)State#saa[]Char[](,)a[]CharMutableByteArray# RealWorldRatioIntegerCPidCPidIntFixedE12Poly OrdGAMMA_PolyOrdBETA_Poly OrdALPHA_FixedE6CLong(,)IntInt IOExceptionIntegeraammararmamaacacaPolyGAMMA_aFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCIntCTimeCDevIntCClock(,)PtrCWcharIntPtrCWchar()()()()()(,)PtrCCharIntPtrCChar()()()()()()()()()CSizePolyBETA_PolyALPHA_(s~:?~[ ~axwbscgdaceE`fFZgXXhUiNjNkNlKmHnEoApB=q =rU6s0t+u)v(w%zd%ik%pr%ly%i%s%t%ZipList#(1(3(6(8p(e@(on'r%a|&i%t%e%bH&h&m%o%d&e &IOModea&n#&d*&l1&e8& HandleTypeuO&fV&f]&ed&rk& BufferStatep&a@'m'p&e&d&a&m&o&n&a&d& WrappedMonadr&r&o&w& WrappedArrowo'n 'a''d.' WrappedMonadrG'rN'oU'w\' WrappedArrowru'd|'Word#1(1(3(6'8'p't'r'WordPtrWord84'Word64#'Word64#2 (Word326!(Word16Word#aG(kN(Weak#a(Weak##w(Word84(#(Word642(#(Word326(#(Word16Worde(r(s(i(o(n)Versionn)ph)s&)e-)r4)e;)rB)rI)oP)rW) IOErrorTypepo)ev)r})c)a)s)e)l)e)t)t)e)r)GeneralCategoryd=+i+s)av*u)p)p*o *r*t*e*d&*o-*p4*e;*rB*aI*tP*iW*o^*ne* IOErrorTypet}*i*s*f*i*e*d*c*o*n*s*t*r*a*i*n*t*s* IOErrorTypeq+t+Unitu&+e-+UniqueeD+f+rP+fW+l^+oe+wl+ArithExceptioni+n+e+d+e+l+e+m+e+n+t+ArrayExceptione.ho.i-rG-v+-y,c-p ,e,a?,r ,e',p.,TypeRepbF,lM,eT,Typeable1,2,3,4,5,6,7, Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1o-n-TyCona2-r9-TVarad-uS-eZ-Boolvk-er-ry-s-a-b-l-e- Traversablem&.t-l-e-c-a-s-e-l-e-t-t.e .r.GeneralCategorye-.e4.x;.pB.iI.rP.eW.d^. IOErrorTyperv.e}.a.d.i.k.i.l.l.e.d.AsyncExceptiond.ThreadId#. ThreadId#s/t /a'0e/f/o_/r(/e//s6/u=/lD/tK/ TestResultk/pk/tr/iy/o/n/s/ TestOptions TestResulta/i/l/e/d/ TestResultx/a/u/s0t 0e0d0 TestResultb.0lf0o:0rA0tH0eO0dV0 TestResultem0Testable#H6a6e5h4p4tw1u1y0m0s0t0e0m0e0r0r0o0r0 IOErrorTypeb1o 1l1Lexememj1r+1r21o91g@1aG1tN1eU1GeneralCategorySumSTa2d2m2os2r1e2i1n1g1Stringc1r1e1p1DataRepo1n1s2t2r2 ConstrRepa`2fQ2pB2t32STretSTRepSTRefmg2FDTyperz2a2b2l2e2StorableSTMg2e2n2StdGenb3c43r3t2e2#2State#r3a3y#3STArrayk;3oB3vI3eP3rW3f^3le3ol3ws3AsyncExceptionl3e3n3p3t3r3 StablePtr#3 StablePtr#a3m3e3 StableNamea 4c4e4i4n%4g,4c34o:4mA4bH4iO4nV4i]4nd4gk4mr4ay4r4k4GeneralCategoryGeneralCategoryo4u4t4d4o4w4n4 ConsoleEventw4Shows 5ShowSe5m'5i.5c55l<5oC5sJ5eQ5dX5h_5af5nm5dt5l{5e5 HandleTypek5f5m5o5d5e5SeekModer5o5m5e5n5d5SeekModem 6p6l6e 6v'6a.6r56 SampleVarIntegera;e6if6gm6ht6t{6Eithera9c9g8lv8q8s7t6u6r6n6i6n6o6r6d6e6r6ArgOrdero*7u 7l7t7Resultu17r87c?7eF7b7e7vW7a^7ne7il7ss7hz7e7d7 IOErrorTypex7h7a7u7s7t7e7d7 IOErrorTypeu7s7y7 IOErrorTypeaZ8u8i8r"8e)8o08r78d>8eE8rL8ArgOrderra8gh8ArgDescra}8t8i8v8e8s8e8e8k8SeekModeu8l8a8r8f8i8l8e8FDTypec9sX9u9p9d&9e-9r49r;9oB9rI9 Exceptione_9lf9em9rt9r{9o9r9 Exceptiono9n9e9r9r9o9r9 Exceptiond:l9Realf+:w9o:r :l:d: RealWorldlW:r7:a>:cE:RealFraco^:ae:tl: RealFloatReadb;h;mj;p6;s';w:r:i:t:e:h:m:o:d:e:IOModea:n;d ;l;e; HandleTypeReadSReadPrJ;eQ;cX;ReadPrecoq;dx;e;IOModea;n;d;l;e; HandleTypeu;f;f;e;r; BufferStaten<tt<w<b><d<e<v<i$<c+<e2<FDTypeuE<fL<fS<eZ<ra< RawBufferLexemei<o<Ration<a<l<Rationald<o<m<Randomg<e<n< RandomGens=e=m =QSemn3=QSemNa@e@i?o?r=t=ug=nn=cu=Lexemer=Ptre?i>o=c`>d:>p >t=o=c=o=l=e=r=r=o=r= IOErrorTypee>r>t!>y(>PropertyuA>cH>tO>Producteg>sn>su>g>i>d> ProcessIDr>o>u>p>i>d>ProcessGroupIDn(?v>a>t>e>u?s ?e?GeneralCategoryt/?f6?ak?tB?yI?pP?eW? PrintfTyperr?gy? PrintfArgc?f?i?x?FixityPrecl?o?l?Pooly?Polyc?o@Picor@m @iH@u,@t3@e:@ArgOrdersO@sV@i]@od@nk@dr@ey@n@i@e@d@ IOErrorTyperAt@t@e@r@n@m@a@t@c@h@f@a@iAl A Exceptiona#Ag*Ar1Aa8Ap?AhFAsMAeTAp[AabAriAapAtwAo~ArAGeneralCategoryOpaquebEp|Dr]CtAvAeArAfAlAoAwAArithExceptionhBe BrBe0ClBnBpeBs-By4Bm;BbBBoIBlPBGeneralCategoryulBnsBczBtBuBaBtBiBoBnBGeneralCategoryuBmBbBeBrBGeneralCategoryeBtCt CeCrCGeneralCategoryr7Cr>CoECrLC IOErrorTypeddCOrda6DbCeCgCaCmCmCaCOrdGAMMA_C OrdGAMMA_rCiCnCgCOrderingeDtDaDOrdBETA_$DOrdBETA_l=DpDDhKDaRDOrdALPHA_iD OrdALPHA_amEeEtDaDdDiDoDnDOptDescreDsDcDrDOptDescrrDgDArgDescrn EpEuEn Ec'Et.Eu5EaHgEHArgDescrsZHtaHehHdoHavHt}HoHmHiHcHaHlHlHyH Exceptiona^Ki:KoIuIvHaHrHMVar#IMVar#tIaHIv"Ia)Ir0I#7IMutVar#bOIlVIe]IaIbiIypItwIe~IaIrIrIaIyI#IMutableByteArray#rIrIaIyI#I MutableArray#dJn Ja3JoJiJd#JMonoidd:JMonadf{JpSJlZJuaJshJ MonadPlusiJxJMonadFixiJfJiJeJrJlKsJyJmJbJoJlJGeneralCategorye KtKtKeKr%KGeneralCategorycAKrHKoOKMicrotKyjKbqKexKMaybehKsKyKmKbKoKlKGeneralCategoryamNeMiLoKtKOrderinggLspLwLeLrLcLa#Ls*Le1Ll8Le?LtFLtMLeTLr[LGeneralCategoryswLo~LfLpLrLeLcLiLsLiLoLnLArithExceptionoLfLfL ConsoleEventmMn MeMbkMsMe%Mp,Ma3Mr:MaAMtHMoOMrVMGeneralCategoryurMfyMfMeMrMiMnMgM BufferModeiMtMLimitfZNtNxMeMmMeMLexemet NeNrNn"Nu)Nm0Nb7Ne>NrENGeneralCategorytaNEitherstNt{NLastlNeNiNsNlNiNKleisli#NuNsNtNMaybeInteger #U1U3pU6WU8FUd%UgTlTnPoOpOsEOx9OIxcOsQOtXOr_OifOnmOgtOIsStringhOaOrOIsCharrOIPrIOaPe!PmOrOeOfOIORefoPd PePIOModersPx-Pc4Pe;PpBPtIPiPPoWPn^P IOExceptionrzPoPrPIOErrortPyPpPeP IOErrorTyperPrPaPyPIOArrayaTdSfSi9Sl0Sr'StQvQa&Ql-Qi4Qd;QaBQrIQgPQuWQm^QeeQnlQtsQ IOErrorTypeInt #S1S3R6R8RcReQpQrQeQpQDataReptQrQIntPtrg>RrRr RuRpRtRe&Rd-R IOErrorTypeejRrJRaQRlXRIntegralrqRIntegeroRnRsRtRrR ConstrRepInt84RInt64#RInt64#2RInt326 SInt16Int#:+::+:t@SiGSaNSlUSq\SucSojStqSexSGeneralCategoryiSxSFixityeSxSoSuStSoSfSbSoSuSnSdSsTArrayExceptionpTp$Tr+To2Tp9Tr@TiGTaNTtUTe\TtcTyjTpqTexT IOErrorTypelTeTgTaTlToTpTeTrTaTtTiToTnT IOErrorTypenUo UrUeUHandlere,Un3Ut:ULexeme#MUInt84^U#eUInt642wU#~UInt326U#UInt16IntajVeVpUrUiUnUtUfUtUyUpUeU HPrintfTypeaVpVo%Vv,Ve3Vr:VfAVlHVoOVwVVAsyncExceptionnjWrWs{VhVrVeVsVoVlVuVtViVoVnV HasResolutiontVaVbVlVeW HashTabledWw!Wa(Wr/We6Wf=WaDWuKWlRWtYW IOErrorTypedqWlxWeWHandle_?XpWrWtWyWpWeW HandleTypeHandleroWsWi XnW HandlePosntXiXo Xn'XHandlePosition_FXHandle__a ZeXmXqXtsXOrdering GenericQ' GenericM'nXGeneXrXaYiXcXGeneric'YbYmgYq=Yr+YtYGenericT'Y GenericT'GenericRGenericQ'TY GenericQ'GenericM'~Y GenericM'GenericBGeneric'lYcYaYtYeYgYoYrYyYGeneralCategorymZmZa"ZGAMMA_6ZGAMMA_ #:`a`d_f^i\l\o[rZuuZn|ZcZpZtZrZFunPtrtZoZrZFunctoraZcZtZiZoZnZaZl[ Fractionall[r$[eS[m0[a7[t>[GeneralCategoryiZ[ga[nh[po[tv[r}[ ForeignPtrc[o[n[t[e[n[t[s[ForeignPtrContentsd[a[b[l[e\Foldableo\a&\t-\Float#\c\ik\rP\eW\p^\DataRepnr\gy\Floatingo\n\s\t\r\ ConstrRepFloat#l ^n@]r#]x\e ]i\t\y\Fixityd]Fixeds*]t1]FirstaG]lN]i]qZ]ua]oh]to]ev]GeneralCategoryz]e]r]e]p]t]r] FinalizerPtrn]v]p]t]r]FinalizerEnvPtre^h^i^m^oU^p.^a5^t<^hC^FilePathf\^fc^sj^eq^tx^ FileOffseto^d^e^FileModed^FileIDa^n^d^l^e^Handlee_fB_g _e_n_e_r&_i-_c4_FFFormati|_oN_rU_m\_ac_tj_FFFormatx_e_d_FFFormatx_p_o_n_e_n_t_FFFormatFDFdt_y_p`e `FDTypel"`s)`e0`BoolFloat 1Mc6Acicnbolbp(bqbraxt`c{ai`t`cTae af`s`u`c`c`e`s`s`ExitCodea`i`l`u`r`e`ExitCodexacae"ap)at0ai7ao>anEa Exceptiono[adbaeiaExitCodeeapataiaoana Exceptionranaoaracaaalala ExceptionobErrnoOrderingEqo/bc6bh=btDbiKbmRbeYb EpochTimefsbLexemecbdbubmbEnumobEndolbobsbibnbgbmbabrbkcGeneralCategorytch#ce*cr1cEitherE62TcE12#gafeeidoduFdycnca decicocecrcrcocrc IOErrorTypexcccecpctcido dnd Exceptionm'di.dc5dDynamicadpRdlYde`dxgdhndaudn|dddldedHandleldDualudbdldedDouble#dDouble#rSeveiedeeebey#ez*ee1er8eo?eArithExceptioneZecaetheooervey}eFDTypeafc9fffneveieceeeiedeDeviceIDoeremeaeleArithExceptionafufl%ft,fHandleri@fmGfaNflUfn\fucfmjfbqfexfrfGeneralCategorydflfofcfkf Exceptions@gtfafDataDatar!gtfygpgegDataTypee(gp/gDataRephGgpNguUgn\gccgtjguqgaxgtgigogngGeneralCategoryDouble#sascgsdrfOrg#rhqiiqj5qlomgooJmplsktjuhw hcuhshthr&hi-hn4hg;hCWStringlRheYhn`h CWStringLenh|hahrhCWcharchjijlirOis"ithihshnhahmhehCUtsnamemhbiu ifiCUtimbufh)io0ir7it>iCUShortrVie]indickiyrisyiyimibioiliGeneralCategorylioinigiCULongoinigiCULLongnjtjCUIntmHjp(jt/jr6jCUIntPtraOjxVjCUIntMaxhojavjr}jCUCharejijmjCTmsjCTmsmjejCTimerjmjijojsjCTermiosclhxlikskt+kakr7ki>knEkgLkCStringlbkeiknpk CStringLentkCStatikzkekCSsizegkzkekCSizea lskektkCSigsetcHltlolm&li-lc4l CSigAtomictOliVlo]lndl CSigactionolrltlCShorthlalrlCSCharamimtlrldlilflflCPtrdiffdmCPids$ms+mw2md9mCPasswdfRom%on[mfoinnTnsmtvmr}momlmGeneralCategorycm ConsoleEvento ntmConstrmConstrrmempm ConstrReplnene"nv)ne0nn7nt>n ConsoleEvente[ncbntinopnrwnp~nunnncntnunantninonnnGeneralCategorynndnenxnConIndexiogoConfigp,ol3oe:oxAoComplexfYoCOffonoduoe|oCModecqdplpoocpnjpsoeo ConsoleEventd0ppouonocotouoaotpi popnpGeneralCategoryh7pa>pnEpdLplSpeZp HandleTypegqpCLongkptpipcpkp ClockTickopnpgpCLLongopupbplpepCLDoubleoqnqv%qCLconvm+ӈȈvdYN8-ۇЇcXM*dž=ShowaTestableprop:ShowaTestableprop< ArbitraryaEqbShowa9 ArbitraryaEqaShowa#+ShowaTestableb> ArbitraryaOrdaShowaDTestablea%Testablea;&Testablea ArbitraryaTestablea?@6 ,String!StringK(12 ArbitraryaF TestableaString /TestableaTestableaStringMonadm.Monadm0Monadm TestableaStringEStringGIStringHString"*StringShowaTestablebRandoma57  Arbitrarya'AŒdJ6ԑ|Z4̐rV>* ȏx\8֎zdH.~jR6$܌zZB̋nvectoryvector2variantvariant1utilsUtilstwo‹two0trivial؋trivial/threethree. testresult  TestResultL testoptions, TestOptionsJKtestokMTestOkI testfailedi TestFailedH testexausted TestExaustedG testaborted TestAbortedFtestable͌Testable-stampstamp,sizedsized+runtestsrunTestsErun,runDresultAResult)*resize]resize(randsrand' quickcheck QuickCheck quickCheck&propertyÍProperty$property%promotepromote#polyPolyordgammaOrdGAMMACordbeta:OrdBETABordalphaUOrdALPHAAoneofnoneof"okok! no_of_tests no_of_tests@length_of_testslength_of_tests?labellabel istotalorder isTotalOrder>iscommutableby#isCommutableBy= iscommutableI isCommutable<isbottomiisBottom;isassociativebyisAssociativeBy: isassociative isAssociative9generateՏgenerategenGengammaGAMMA8 frequency frequencyfour3fourforallIforAllevaluatecevaluateelementselementsdefoptdefOpt7 defaultconfig defaultConfig debug_testsܐ debug_tests6 configsize configSize configmaxtest  configMaxTest configmaxfailF configMaxFail configeveryj configEveryconfigConfigcollectcollect coarbitrary‘ coarbitraryclassifyclassifychoosechoosecheckcheck bottom)bottom5beta?BETA4batchTBatch argumentsr arguments arbitrary Arbitrary arbitrary alphaALPHA3==>͒==> LiZ߷{!{gб6$$N#toC3ԩpĨMէAեs<0FȢOc%jqGPš@nta?۔G TestResultdata  TestResultC TestOptions  TestOptions :: Int -> Int -> Bool ->  TestOptionsהIntIntBool TestOptions TestOptionsdata  TestOptionsTestOk TestOk :: String -> Int ->  [[String]] ->  TestResultStringInt[][]String TestResult TestFailed TestFailed :: [String] -> Int ->  TestResult;[]StringInt TestResult TestExausted  TestExausted :: String -> Int ->  [[String]] ->  TestResultStringInt[][]String TestResult TestAborted TestAborted ::  Exception ->  TestResult]C Exception TestResultrunTests runTests :: String ->  TestOptions -> [TestOptions -> IO TestResult] -> IO ()3String TestOptions[] TestOptionsIO TestResultIO()=Prints a one line summary of various tests with common theme runrun :: Testable a => a ->  TestOptions ->  IO TestResultژTestableaa TestOptionsIO TestResult\Run the test. Here we use the same random number each time, so we get reproducable results! OrdGAMMAtype OrdGAMMA = Poly OrdGAMMA_OrdBETAtype OrdBETA = Poly OrdBETA_OrdALPHAtype OrdALPHA = Poly OrdALPHA_< no_of_tests no_of_tests ::  TestOptions -> Int TestOptionsIntnumber of tests to run. length_of_testslength_of_tests ::  TestOptions -> Int0 TestOptionsIntetime limit for test, in seconds. If zero, no time limit. Note: only GHC supports time limits.  isTotalOrder isTotalOrder ::  (Arbitrary a, Show a, Ord a) => a -> a -> PropertyL ArbitraryaShowaOrdaaaPropertyisCommutableBy isCommutableBy :: (Show a, Testable prop) => (b -> b -> prop) -> Gen a ->  (a -> a -> b) -> PropertyCShowaTestablepropbbpropGenaaabProperty isCommutable isCommutable :: (Arbitrary a, Show a, Eq b) =>  (a -> a -> b) -> Property ArbitraryaShowaEqbaabPropertyisBottomisBottom :: a -> BoolNBaBoolLook out behind you! These can be misused badly. However, in the context of a batch tester, can also be very useful. Examples of use of bottom and isBottom:
{- test for abort -}
prop_head2 = isBottom (head [])
{- test for strictness -}
prop_head3 = isBottom (head bottom)
isAssociativeBy isAssociativeBy :: (Show a, Testable prop) => (a -> a -> prop) -> Gen a ->  (a -> a -> a) -> PropertyfShowaTestablepropaapropGenaaaaProperty isAssociative isAssociative :: (Arbitrary a, Show a, Eq a) =>  (a -> a -> a) -> Property! ArbitraryaShowaEqaaaaPropertyGAMMAtype GAMMA = Poly GAMMA__defOptdefOpt ::  TestOptions TestOptions debug_tests debug_tests ::  TestOptions -> Bool TestOptionsBoolbottombottom :: aKGaBETAtype BETA = Poly BETA_ALPHAtype ALPHA = Poly ALPHA_Ģvectorvector :: Arbitrary a => Int -> Gen [a]B ArbitraryaIntGen[]avariantvariant :: Int -> Gen a -> Gen aIntGenaGenatwotwo ::  Monad m => m a -> m (a, a),Monadmmam(,)aatrivialtrivial :: Testable a => Bool -> a -> PropertyTestableaBoolaPropertythreethree ::  Monad m => m a ->  m (a, a, a)8 Monadmmam(,,)aaaTestableclass Testable aostampstamp :: Result -> [String]ѥResult[]Stringsizedsized :: (Int -> Gen a) -> Gen a=IntGenaGenaResult Result ::  Maybe Bool -> [String] -> [String] -> ResultMaybeBool[]String[]StringResultResultdata Resultresizeresize :: Int -> Gen a -> Gen anIntGenaGenarandrand ::  Gen StdGenѧGenStdGen quickCheck quickCheck :: Testable a => a -> IO ()I*TestableaaIO()propertyproperty :: Testable a => a -> PropertyTestableaaPropertyPropertydata Propertypromotepromote ::  (a -> Gen b) ->  Gen (a -> b)lKaGenbGenaboneofoneof :: [Gen a] -> Gen aЩ[]GenaGenaokok :: Result ->  Maybe Bool/ResultMaybeBoollabellabel :: Testable a => String -> a -> PropertyTestableaStringaPropertygenerate generate :: Int -> StdGen -> Gen a -> a?"IntStdGenGenaaGendata Gen ak frequency frequency :: [(Int, Gen a)] -> Gen a[](,)IntGenaGenafourfour ::  Monad m => m a -> m (a, a, a, a)p?Monadmmam(,,,)aaaaforAllforAll :: (Show a, Testable b) => Gen a -> (a -> b) -> PropertyShowaTestablebGenaabPropertyevaluateevaluate :: Testable a => a ->  Gen ResultyTestableaaGenResultelementselements :: [a] -> Gen a[]aGena defaultConfig defaultConfig :: ConfigJAConfig configSize configSize :: Config -> Int -> IntConfigIntInt configMaxTest configMaxTest :: Config -> Int ConfigInt configMaxFail configMaxFail :: Config -> InttConfigInt configEvery  configEvery :: Config -> Int -> [String] -> String ConfigInt[]StringStringConfigConfig :: Int -> Int -> Int -> Int -> Int -> [String] -> String -> ConfigȰIntIntIntIntInt[]StringStringConfigConfigdata Config2collectcollect :: (Show a, Testable b) => a -> b -> Property̱ShowaTestablebabProperty coarbitrary coarbitrary :: Arbitrary a => a -> Gen b -> Gen bc9 ArbitraryaaGenbGenbclassify classify :: Testable a => Bool -> String -> a -> Property ݲTestableaBoolStringaPropertychoosechoose ::  Random a => (a, a) -> Gen a^Randoma(,)aaGenacheckcheck :: Testable a => Config -> a -> IO () TestableaConfigaIO() arguments arguments :: Result -> [String]w^Result[]String arbitrary arbitrary :: Arbitrary a => Gen aݴ´ ArbitraryaGena Arbitraryclass  Arbitrary a==> (==>) :: Testable a => Bool -> a -> PropertyzTestableaBoolaPropertyUtilsmodule Test.QuickCheck.Utils۵BThese are some general purpose utilities for use with QuickCheck. Utilsmodule Debug.QuickCheck.UtilsZBThese are some general purpose utilities for use with QuickCheck.  QuickCheckmodule Test. QuickCheck׶QuickCheck v.0.2 DRAFT implementation; last update 000104. Koen Claessen, John Hughes. This file represents work in progress, and might change at a later date.  QuickCheckmodule Debug. QuickCheck(implementation moved to Test.QuickCheck QuickCheckpackage  QuickCheck Automatic testing of Haskell programs A library for testing Haskell programs automatically. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases. Specifications are expressed in Haskell, using combinators defined in the QuickCheck library. QuickCheck provides combinators to define properties, observe the distribution of test data, and define test data generators. Polymodule Test.QuickCheck.PolyUThis is an attempt to emulate polymorphic types for the purposes of testing by using abstract monomorphic types. It is likely that future versions of QuickCheck will include some polymorphic emulation testing facility, but this module can be used for now. Polymodule Debug.QuickCheck.PolyBatchmodule Test.QuickCheck.BatchͻA batch driver for running QuickCheck. Note: in GHC only, it is possible to place a time limit on each test, to ensure that testing terminates. Batchmodule Debug.QuickCheck.Batch:This is a batch driver for running QuickCheck (GHC only). w`I3Test QuickCheckUtilsDebug QuickCheckUtilsTest QuickCheckPolyDebug QuickCheckPolyTest QuickCheckBatchTest QuickCheckDebug QuickCheckDebug QuickCheckBatch QuickCheck1.1.0.0Hhttp://hackage.haskell.org/packages/archive/QuickCheck/1.1.0.0/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/QuickCheck