)B{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz(C) 2013 Hugo Pacheco BSD-style (see the file LICENSE)!Hugo Pacheco <hpacheco@nii.ac.jp> provisionalNone!"+345>FKL{|}~{|}~{|}~None !"+35>F?  !"#$%&'()*+,-./0123456789:;<=>9  !"#$%&'()*+,-./012345678?34 !"#$%&'()*+,-./0125>6= 7<; :98    !"#$%&'()*+,-./0123456789:;<=>None !"+35>F1?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde'?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde'RSTUVWXYZ[\]^JKLMNOPQFGHI?@ABCDE_`decba?@ABCDEFGHIJKLMNOPQR STUVWXYZ[\]^_`abcdeVNone !"+35>F fghijfghijijgfh fghijNone !"+35>FklklklklNone !"+35>F view patternsource Pattern expression1translate all (VarE name) to directions using envtakes a source pattern and produces a tuple pattern consisting of all the variables in the source pattern 1:s:ss -> (() , (s, ss))Example: rearrSV [p| x:xs |] [p| x:xs |] [p| (x,xs) |] [d| x = Replace; xs = rec |] generates a rearrS from the first pattern and the third pattern and a rearrV from the second pattern and the third patternMmnopqrstuvwxyzmnopqrstuvwxyzqrstuvwxyzpmonFmnopqrstuvwxyz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqpqrstuvwxyz{|}~BiGUL_49AOvoBHU9EDHUs44JlPe4Generics.BiGUL.ErrorGenerics.BiGUL.ASTGenerics.BiGUL.Interpreter!Generics.BiGUL.Interpreter.UnsafeGenerics.BiGUL.TH GHC.InOutPatExprDirErrorPEDConstantMismatchPEDEitherMismatchPEDValueUnrecoverablePEDIncompatibleUpdatesPEDMultipleUpdates PEDProdLeft PEDProdRight PEDEitherLeftPEDEitherRightPEDInGetErrorGFailGSourcePatternMismatch GUnevalFailedGViewRecoveringIncompleteGCaseExhaustedGPreviousBranchMatchedGPostVerificationFailedGBranchUnmatchedGAdaptiveBranchMatched GProdLeft GProdRightGRearrSGRearrVGDep GComposeLeft GComposeRightGBranchPutErrorPFailPSourcePatternMismatchPViewPatternMismatch PUnevalFailedPDependencyMismatchPNoIntermediateSourcePCaseExhaustedPAdaptiveBranchRevisitedPAdaptiveBranchMatchedPPreviousBranchMatchedPBranchPredictionIncorrectPPostVerificationFailedPBranchUnmatched PProdLeft PProdRightPRearrSPRearrVPDep PComposeLeft PComposeRightPBranchPrettyPrintabletoDoc incrBranchNoindentaddCurrentBranchErrorliftE $fPrettyPrintablePatExprDirError$fShowPatExprDirError$fPrettyPrintableGetError$fShowGetError$fPrettyPrintablePutError$fShowPutErrorExprEDirEConstEInEProdELeftERight DirectionDVarDLeftDRightPatPVarPVar'PConstPProdPLeftPRightPInBiGULFailSkipReplaceProdRearrSRearrVDepCaseCompose CaseBranchNormalAdaptive deconstruct constructfromContainerVfromContainerSemptyContainerevaluneval GetResult PutResult errorTraceputgetderiveBiGULGenericrearrVrearrSupdatenormalnormal'normalSnormalVnormalV'normalSVadaptive adaptiveS adaptiveV adaptiveSV ToFromRepfromReptoRepFFlattenInOutinnout$fInOuta$fToFromRep:*:$fToFromRep:+: $fToFromRepM1 $fToFromRepK1 $fToFromRepU1TFCo:R:Flatten:*:TFCo:R:Flatten:+:TFCo:R:FlattenM1TFCo:R:FlattenK1TFCo:R:FlattenU1Varretrieve unevalDir $fShowExpr$fShowDirection $fShowPat $fShowVar $fShowBiGUL$fShowCaseBranch catchBind getCaseBranchputCaseCheckDiversionputCaseWithAdaptationputCasegetCase fromRightRTagSTagETag rearrangeExpmkProdPatFromSrearrSVExpOrPattoExp ErrorMessageValueConstructorTypeConstructor ConTagSeq toConTagsPatTagConTagLRcontag lookupName lookupNameslistMaybe2JusttoconTagsClauseconstructorsToSumconstructorToProductthirdconstructorToPatAndBody zipWithLRs consToEnvconstructFuncFromClauseconstructFuncToClausegenerateSelectorNamesgenerateSelectorDataDgenerateSelectorDataTypegenerateSelectorDataType'generateSelectorInstanceDecgenerateSelectorInstanceDec'generateTypeVarsType constructLRs lookupLRslookupRecordLengthlookupRecordFieldmkConstrutorFromLRs astNameSpacemkPat mkEnvForRearrsplitDataAndConmkBodyExpForRearrrearr' getAllVars mkExpFromPat mkExpFromPat' toProductmkProdPatFromSHelpermkEnvForUpdate patToFunc notFoundMsg withPatTag concatWith nameAdaptive nameNormal $fExpOrPatQ $fExpOrPatQ0 $fShowPatTag