S   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~5Q5fromNamed will return "" when it cannot be represented  toNamed may crash on ""             !"#      $%&'4Is this item lexically requiring no bracketing ever  i.e. is totally atomic (=Is the child safe free from brackets in the parent position. ) Err on the side of caution, True = don't know )1Add a Paren around something if it is not atomic **Descend, and if something changes then add/remove brackets appropriately +,Add/=remove brackets as suggested needBracket at 1-level of depth - $%&'()*+,- $%&'(%&'()*+,- ./.. 012345678Parse a Haskell module 9:;  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%&'()*+,-.012345678:; 01234512345678:; <=>?@ABCDEFGHIJKLMNOPQRSTUVWXY<=>?@ABCDEFGHIJKLZN[\ORW< D?>=EFGEF@ABC=>?@ABCDEFGHILKJJKLNORW ]^_`abcdefghIJKL]^_`abcdefighjklm ] `^abcdefbcd_e^_`abcdefgh nopqrst.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%&'()*+,-.012345678:;IJKL]^_`abcdefighjklmnopqrstnqorpopqrstuvwxyz{|}~uu /Generate a lambda, but prettier (if possible). D Generally no lambda is good, but removing just some arguments isn' t so useful. <Convert expressions which have redundant junk in them away. @ Mainly so that later stages can match on fewer alternatives.  nopqrst;Given a set of hints, do all the MatchExp hints type check  )   run in test mode?  which files to run it on  which settingsfiles to use *which settignsfiles were explicitly given where to generate reports the hints to ignore display all skipped items color the result options for cpphs the data directory the text encoding "source files to look for hints in #the extensions (may be prefixed by No) supress all console output *Exit out if you need to display help info                !"#$"" A suggestion - the Show instance is of particular use. %&;From a suggestion, extract the file location it refers to. YThis function takes a list of command line arguments, and returns the given suggestions. # To see a list of arguments type  hlint --help at the console. % This function writes to the stdout/stderr streams, unless --quiet is specified. As an example: 9 do hints <- hlint ["src", "--ignore=Use map","--quiet"] 6 when (length hints > 3) $ error "Too many hints!" '( ! " #$%&'()*+,*+-*+.*+/*+0*+1*+2*+3*45*46*47*89*8:*8;*8<*8=*8>*8?*8@*8A*8B*8C*8D*8E*8F*8G*8H*8I*8J*KL*KM*NO*NP*NQ*NR*NS*NT*NU*NV*NW*NX*NY*NZ*N[*N\*N]*N^*N_*N`*Na*Nb*Nb*Nc*de*df*dg*dh*di*dj*dk*dl*dm*dn*do*do*pq*pr*ps*pt*pu*pv*pv*wx*wy*wz*w{*w|*w}*w~*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w*w************************************************************************** * * * * ******************** *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*.*1*1*2*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*@*A*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*w*x*y*z*{*{*|*}*|*~*~*************S*****T*********************************************************************************************************************************** * * * * * ******************** *!*"*#*$*%*&*'*(*)***+*,*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*F*L*M*N*L*O*O*P*Q*Q*R*R*S*T*U*VW*VX*VY*VZ*V[*V\*V]*V^*V_*V`*Va*Vb*Vc*Vd*Ve*Vf*Vg*Vg*Vh*Vi*Vj*Vk*Vl*Vm*Vm*Vn*Vo*Vo*Vp*Vq*Vr*Vr*Vs*Vt*Vu*Vv*Vw*Vx*Vyz{|z{}z{~z{z{z{z{z{z{z{z{      !"#$%&'()*+,-./012345 6 7 8 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c  d e  f g h i j k l m n o p q r s t u v w t vxyz{|}~\      !   hlint-1.8Language.Haskell.HLintHSE.TypeHSE.Util HSE.Match HSE.NameMatchParallelUtil HSE.Bracket HSE.EvaluateHSE.AllSettingsIdea Hint.Type Hint.Match Hint.List Hint.Monad Hint.Bracket Hint.NamingHint.Structure Hint.Import Hint.PragmaHint.Extensions Hint.Util Hint.ListRec Hint.LambdaHint.AllApplyTest Paths_hlintCmdLineReportHLint SuggestionsuggestionLocationhlintType_Pat_Exp_Decl_Module_Shaskell-src-exts-1.9.0Language.Haskell.Exts.AnnotatedreadExtensionsparseFileContentsWithCommentsparseFileContentsWithModeparseFileContentsWithExtsparseFileContentsparseFileWithCommentsparseFileWithModeparseFileWithExtsLanguage.Haskell.Exts.ParserparseWithComments parseWithMode Parseable$Language.Haskell.Exts.InternalParserparseStmtWithCommentsparseStmtWithMode parseStmtparseTypeWithCommentsparseTypeWithMode parseTypeparseDeclWithCommentsparseDeclWithMode parseDeclparsePatWithCommentsparsePatWithModeparsePatparseExpWithCommentsparseExpWithModeparseExpparseModuleWithCommentsparseModuleWithMode parseModule&Language.Haskell.Exts.Annotated.Fixity applyFixities AppFixityLanguage.Haskell.Exts.Pretty prettyPrintprettyPrintWithModeprettyPrintStyleMode defaultMode PPOffsideRule PPSemiColonPPInLine PPNoLayoutPPLayoutIndent linePragmaslayoutspacing onsideIndent whereIndent letIndent caseIndentdoIndent classIndentPPHsModePretty Language.Haskell.Exts.ParseMonaddefaultParseModefromParseResultParseOk ParseFailed ParseResultfixitiesignoreLinePragmasignoreLanguagePragmas extensions parseFilename ParseModeLanguage.Haskell.Exts.Fixityinfix_infixl_infixr_ baseFixitiespreludeFixitiesFixityLanguage.Haskell.Exts.ExtensionclassifyExtensionknownExtensions glasgowExts impliesExtsOverlappingInstancesUndecidableInstancesIncoherentInstances RecursiveDoParallelListCompMultiParamTypeClassesNoMonomorphismRestrictionFunctionalDependenciesExplicitForall Rank2Types RankNTypesPolymorphicComponentsExistentialQuantificationScopedTypeVariablesImplicitParamsFlexibleContextsFlexibleInstancesEmptyDataDeclsCPPKindSignatures BangPatternsTypeSynonymInstancesTemplateHaskellForeignFunctionInterfaceArrowsGenericsNoImplicitPreludeNamedFieldPuns PatternGuardsGeneralizedNewtypeDerivingExtensibleRecordsRestrictedTypeSynonyms HereDocuments MagicHash TypeFamiliesStandaloneDeriving UnicodeSyntaxPatternSignaturesUnliftedFFITypesLiberalTypeSynonyms TypeOperatorsRecordWildCards RecordPunsDisambiguateRecordFieldsOverloadedStringsGADTs MonoPatBindsNoMonoPatBindsRelaxedPolyRecExtendedDefaultRules UnboxedTuplesDeriveDataTypeableConstrainedClassMethodsPackageImportsImpredicativeTypesNewQualifiedOperatorsPostfixOperators QuasiQuotesTransformListComp ViewPatterns XmlSyntaxRegularPatterns TupleSectionsUnknownExtension Extension*Language.Haskell.Exts.Annotated.ExactPrint exactPrintExactPLanguage.Haskell.Exts.CommentsComment%Language.Haskell.Exts.Annotated.Build metaConPat metaFunctionnameBind patBindWherepatBind simpleFunsfungenNameswildcardnoBindsbindsletStmtgenStmtqualStmtpParenpeListeListlistEaltGWaltcaseEletElamEdoEintPcharPstrPintEcharEstrEfunction pvarTuplevarTuplepTupletuplepAppappFuninfixAppapppvarqvaropvarsymname&Language.Haskell.Exts.Annotated.Syntax=~= tuple_tyconunboxed_singleton_tycon list_tycon fun_tycon unit_tycontuple_tycon_nameunboxed_singleton_tycon_namelist_tycon_namefun_tycon_nameunit_tycon_name ccall_name stdcall_namethreadsafe_name unsafe_name safe_name export_name star_namedot_name bang_name minus_name hiding_namequalified_nameas_nameunboxed_singleton_con tuple_conunit_conunboxed_singleton_con_namelist_cons_nametuple_con_name unit_con_name main_namemain_mod prelude_mod ModuleNameUnitConListConFunConTupleConConsUnboxedSingleCon SpecialConQualUnQualSpecialQNameIdentSymbolNameIPDupIPLinIPNameQVarOpQConOpQOpVarOpConOpOpVarNameConNameCNameModuleXmlPage XmlHybrid ModuleHeadExportSpecListEVarEAbs EThingAll EThingWithEModuleContents ExportSpec importSpecsimportAs importPkg importSrcimportQualified importModule importAnn ImportDeclImportSpecListIVarIAbs IThingAll IThingWith ImportSpec AssocNone AssocLeft AssocRightAssocTypeDecl TypeFamDeclDataDecl GDataDecl DataFamDecl TypeInsDecl DataInsDecl GDataInsDecl ClassDeclInstDecl DerivDecl InfixDecl DefaultDecl SpliceDeclTypeSigFunBindPatBindForImpForExpRulePragmaDeclDeprPragmaDeclWarnPragmaDecl InlineSigInlineConlikeSigSpecSig SpecInlineSigInstSig AnnPragmaDeclAnnTypeAnn ModuleAnn AnnotationDataTypeNewType DataOrNewDHeadDHInfixDHParenDeclHeadIHeadIHInfixIHParenInstHeadDerivingBDeclsIPBindsBindsIPBindMatch InfixMatch QualConDeclConDecl InfixConDeclRecDecl FieldDeclGadtDeclClsDecl ClsDataFamClsTyFamClsTyDefInsDeclInsTypeInsDataInsGDataBangedTy UnBangedTy UnpackedTyBangType UnGuardedRhs GuardedRhssRhs GuardedRhsTyForallTyFunTyTupleTyListTyAppTyVarTyConTyParenTyInfixTyKindTypeBoxedUnboxed KindedVar UnkindedVar TyVarBindKindStarKindBangKindFn KindParenKindVarKindFunDepCxSingleCxTupleCxParenCxEmptyContextClassAInfixAIParamEqualPAsstCharStringIntFracPrimIntPrimWord PrimFloat PrimDoublePrimChar PrimStringLiteralVarIPVarConLitInfixAppAppNegAppLambdaLetIfCaseDoMDoTuple TupleSectionListParen LeftSection RightSection RecConstr RecUpdateEnumFrom EnumFromTo EnumFromThenEnumFromThenToListCompParComp ExpTypeSigVarQuoteTypQuote BracketExp SpliceExp QuasiQuoteXTagXETagXPcdataXExpTag CorePragma SCCPragma GenPragmaProc LeftArrApp RightArrAppLeftArrHighAppRightArrHighAppExpXNameXDomNameXAttr ExpBracket PatBracket TypeBracket DeclBracketBracketIdSplice ParenSpliceSplice PlayRiskyPlaySafeSafetyStdCallCCallCallConvLanguagePragma OptionsPragmaAnnModulePragma ModulePragmaGHCHUGSNHC98YHCHADDOCK UnknownToolTool ActiveFrom ActiveUntil ActivationRuleRuleVar TypedRuleVarDeprTextWarnText WarningTextPVarPLitPNegPNPlusK PInfixAppPAppPTuplePListPParenPRecPAsPat PWildCardPIrrPat PatTypeSigPViewPatPRPatPXTagPXETagPXPcdataPXPatTagPXRPats PExplTypeArg PQuasiQuotePBangPatPatPXAttrRPStarRPStarGRPPlusRPPlusGRPOptRPOptGRPatOpRPOpRPEitherRPSeqRPGuardRPCAsRPAsRPParenRPPatRPat PFieldPat PFieldPunPFieldWildcardPatField Generator QualifierLetStmtRecStmtStmtQualStmt ThenTransThenByGroupBy GroupUsing GroupByUsing FieldUpdateFieldPun FieldWildcardAlt UnGuardedAlt GuardedAlts GuardedAltamapann AnnotatedLanguage.Haskell.Exts.SrcLoc<^^><**<+?><++> combSpanInfoinfoSpan noInfoSpan isNullSpan mergeSrcSpan mkSrcSpan srcSpanEnd srcSpanStart srcColumnsrcLine srcFilenameSrcLocsrcSpanEndColumnsrcSpanEndLinesrcSpanStartColumnsrcSpanStartLinesrcSpanFilenameSrcSpanunLocLoc srcInfoPoints srcInfoSpan SrcSpanInfo startColumn startLinefileName getPointLoc fromSrcInfo toSrcInfoSrcInfopretty-1.0.1.1Text.PrettyPrint.HughesPJMode OneLineModeLeftMode ZigZagModePageModeStylemode lineLengthribbonsPerLinestyleuniplate-1.5.1!Data.Generics.Uniplate.OperationsholesBi contextsBi rewriteBiM rewriteBi transformBiM transformBi childrenBi universeBiparaholescontextsrewriteMrewrite transformM transformchildrenuniversedescendMdescenduniplateUniplate descendBiM descendBibiplateBiplateopExpexpOp moduleDecls moduleName moduleImports modulePragmasfromModuleNameisCharfromCharisString fromString fromParen fromPParen fromTyParendeclBindunqualfromQual isSpecialisDolisDotisDotAppdotAppdotApps getEquations toFunBindfromGuardedAlts toGuardedAltsreplaceBranchesappsfromApps childrenApps descendApps descendAppsM universeApps transformAppstransformAppsM universeS childrenSvarspvarsuniverseParentExp showSrcLoctoSrcLoc nullSrcLocandropAnnelem_nub_ intersect_neqListeqListeqMaybe getFixity isPString fromPStringisVarisApp isInfixAppisListisAnyAppisParenisLambdaisMDoisBoxed isDerivDeclisFunDep isPBangPatisPExplTypeArg isPFieldPun isFieldPunisPFieldWildcardisFieldWildcard isPViewPat isParComp isPatTypeSig isQuasiQuote isSectionallowRightSectionallowLeftSectionisLexeme/=~=NamedtoNamed fromNamedVar_NoVar_PVar_NoPVar_App1NoApp1App2NoApp2Viewview~=isConisSymScope NameMatch moduleScope emptyScope scopeImports nameMatch nameQualify possModules possImportparallel parallel1 parallelNBoxgetDirectoryContentsRecursive partitionM concatMapMconcatMconcatZipWithMlistM'headDef unzipEitherlimitltrimtrimBy groupSortFstdisjointunsnocswapreadFileEncoding warnEncoding exitMessage captureOutput readFile'gzip descendIndexuniverseParentuniverseParentBidefaultExtensionsnotNullisLeftisRight badExtensionsBracketsremParenaddParenisAtom needBracketparendescendBrackettransformBracket rebracket1 appsBracketevaluate evaluate1 ParseFlagscpphslanguageencodinginfixes parseFlagsparseFlagsNoLocations parseString applyFixity parseFile parseResultSettingInfixBuiltinMatchExpscopelhsrhssideClassifyrankShintSfuncSFuncNameRankErrorWarningIgnoregetRank isUnifyVar readSettings readHints readSetting readPragmareadSide readFuncsgetNameserrorOn findSettings findSettingfindExpdefaultHintName isClassify isMatchExp ParseErrormsgfuncrankhintlocfromtoshowANSIshowEx isParseErrorrawIdeaideawarnerrHintModuHintmoduHintDeclHintdeclHint readMatchreadRule dotVersion findIdeas matchIdeaunifyunifyDefunifyExpunifyPatchecksubst checkSide checkDefine performEval unqualify addBracketlistHintlistDecllistExp stringTypeisAppendchecks useStringuseListuseCons typeListChar typeString monadHintmonadExp monadCallbadFuncs monadReturn monadJoinmonadLetfromRet bracketHintbracket fieldDecldollar splitInfix namingHintnamingshorten suggestName replaceNamesPattern structureHinthintsasGuards asPattern importHintwrapsimplify simplifyHeadreduce hierarchynewNames pragmaHint pragmaIdea languageDupes strToLanguage optToLanguageextensionsHintusedhasSun&hasThasT2has niceLambda niceDotApp simplifyExpBranchBListBConsBNilListCase listRecHint matchListRecasDofindCasedelCons eliminateArgs findBranchfindPatreadPat lambdaHint lambdaDecl etaReduce lambdaExp fromLambda staticHints dynamicHints applyHint applyHintStr parseFailedcontextparseOkallHintsclassifyResult _failures_totaltest testHintFiles testHintFiletestSourceFilestestInputOutputnameCheckHintstypeCheckHintscheckAnnotations parseTestFilecheckInputOutputversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameOptsQuietLanguage FindHintsEncodingDataDirExtIncludeDefineColorShowAllSkipHintsVerHelpCmdcmdTestcmdFiles cmdHintFiles cmdGivenHints cmdReports cmdIgnore cmdShowAllcmdColorcmdCpphs cmdDataDir cmdEncoding cmdFindHints cmdLanguagecmdQuietgetCmd exitWithHelp versionTexthelpTextgetFile getHintFile getExtensions readExtension writeTemplate writeReport writeIdea escapeHTMLfromSuggestionrunHints