hi!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  6R6fromNamed will return "" when it cannot be represented  toNamed may crash on ""           FAn encoding is a function to change a handle to a particular encoding  !"#$%&'()*+,#-./0 !"#$%&'()*+,1 !"#$%&'()*+, 23454Is this item lexically requiring no bracketing ever  i.e. is totally atomic 6=Is the child safe free from brackets in the parent position. ) Err on the side of caution, True = don't know 71Add a Paren around something if it is not atomic 8*Descend, and if something changes then add/remove brackets appropriately 9:Add/=remove brackets as suggested needBracket at 1-level of depth ; 23456789:; 234563456789:; <=<< >?@ABCDEFGH?DEFGH?DEFGH 3IJKLMNOPQRSTUVWXYZ[\]^_`run in test mode? a/which files to run it on, nothing = none given bwhich settingsfiles to use c*which settignsfiles were explicitly given dwhere to generate reports ethe hints to ignore fdisplay all skipped items gcolor the result hoptions for CPP ithe data directory jthe text encoding k"source files to look for hints in l#the extensions (may be prefixed by No) msupress all console output nSwork between source files, applies to hints such as duplicate code between modules opqrs*Exit out if you need to display help info tuvwxyz{^_`abcdefghijklmnopqrst^_`abcdefghijklmn_`abcdefghijklmnorqppqrst |}~Parse a Haskell module  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  23456789:;<|}~ |}~}~ How severe an error is. JErrors are suggestions that should nearly always be a good idea to apply. RWarnings are things that some people may consider improvements, but some may not. &Ignored errors are only returned when --show is passed.    7 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  23456789:;<|}~                    RThe position to return if we match at this point, and the map of where to go next E If two runs have the same vals, always use the first pos you find /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.  !"#$%&'()*+,$$-./01-./01-./0123 2323 4Apply hints to a single file. 5.Apply hints to the contents of a single file. 6BApply hints to multiple files, allowing cross-file hints to fire. 7cGiven a list of settings (a way to classify) and a list of hints, run them over a list of modules. 8Like 9$, but also load the file from disk. 9cReturn either an idea (a parse error) or the module. In IO because might call the C pre processor. :VGiven a line number, and some source code, put bird ticks around the appropriate bit. ;-Find which hints a list of settings implies. <JGiven some settings, make sure the severity field of the Idea is correct. 456456=>?@ABCDEFGHI;Given a set of hints, do all the MatchExp hints type check JKLCC MNOPNN!A suggestion - the Show instance is of particular use. QR;From a suggestion, extract the file location it refers to. /From a suggestion, determine how severe it is. 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!" ST " # $ %!&!'!(!)*+,-./0120130140150160170180190:;0:<0:=0>?0>@0>A0>B0>C0>D0>E0>F0>G0>H0>I0>J0>K0>L0>M0>N0>O0>P0QR0QS0TU0TV0TW0TX0TY0TZ0T[0T\0T]0T^0T_0T`0Ta0Tb0Tc0Td0Te0Tf0Tg0Th0Th0Ti0jk0jl0jm0jn0jo0jp0jq0jr0js0jt0ju0ju0vw0vx0vy0vz0v{0v|0v|0}~0}0}0}000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 00000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;090<0<0=0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0K0L0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0~00000000000000000000000Z00000[0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 000000000000000000000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/00010203040405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0N0T0U0V0T0W0W0X0Y0Y0Z0Z0[0\0]0^_0^`0^a0^b0^c0^d0^e0^f0^g0^h0^i0^j0^k0^l0^m0^n0^o0^o0^p0^q0^r0^s0^t0^u0^u0^v0^w0^w0^x0^y0^z0^z0^{0^|0^}0^~0^0^0^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF 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 f g h i j k l m n o p q r s t u v w x y z { | } ~                                                       !"#$%&'()*+,-./01234567899:;<=>?@ABCDE F G H I!&!J!KL hlint-1.8.21Language.Haskell.HLintHSE.TypeHSE.Util HSE.Match HSE.NameMatchParallelUtil HSE.Bracket HSE.Evaluate Paths_hlintCmdLineHSE.AllSettingsIdea Hint.Type Hint.Match Hint.List Hint.Monad Hint.Bracket Hint.NamingHint.Structure Hint.Import Hint.PragmaHint.ExtensionsHint.Duplicate Hint.Util Hint.ListRec Hint.LambdaHint.AllApplyTestReportHLintSeverityErrorWarningIgnore SuggestionsuggestionLocationsuggestionSeverityhlintType_Pat_Exp_Decl_Module_Shaskell-src-exts-1.11.1Language.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.Syntax AssocNone AssocLeft AssocRightAssocLanguage.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 ImportSpecTypeDecl 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 XChildTag 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.1.0.0Text.PrettyPrint.HughesPJMode OneLineModeLeftMode ZigZagModePageModeStylemode lineLengthribbonsPerLinestyleuniplate-1.6.5$Data.Generics.Uniplate.Internal.Data transformBis transformer Transformer!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_notElem_nub_ intersect_neqListeqListeqMaybe getFixity isPString fromPStringisVarisApp isInfixAppisListisAnyAppisParenisLambdaisMDoisBoxed isDerivDecl isPBangPatisPExplTypeArg isPFieldPun isFieldPun isPWildCardisPFieldWildcardisFieldWildcard isPViewPat isParComp isPatTypeSig isQuasiQuote isSectionallowRightSectionallowLeftSectionisLexeme/=~=NamedtoNamed fromNamedVar_NoVar_PVar_NoPVar_App1NoApp1App2NoApp2Viewview~=isConisSymScope NameMatch moduleScope emptyScope scopeImports nameMatch nameQualify possModules possImportparallel parallel1 parallelNBoxEncodingEncoding_InternalgetDirectoryContentsRecursive partitionM concatMapMconcatMconcatZipWithMlistM'headDef unzipEitherlimitltrimtrimBy groupSortFstdisjointunsnocswapdefaultEncodingreadFileEncoding newEncoding exitMessage captureOutput readFile'gzip descendIndexuniverseParentuniverseParentBidefaultExtensionsnotNullisLeftisRightfor badExtensionsBracketsremParenaddParenisAtom needBracketparendescendBrackettransformBracket rebracket1 appsBracketevaluate evaluate1catchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNameOptsAnsiCrossQuietLanguage FindHintsDataDirExt SimpleCppIncludeDefineColorShowAllSkipPathHintsVerHelpCmdcmdTestcmdFiles cmdHintFiles cmdGivenHints cmdReports cmdIgnore cmdShowAllcmdColorcmdCpp cmdDataDir cmdEncoding cmdFindHints cmdLanguagecmdQuietcmdCrossCppFlagsCpphs CppSimpleNoCppgetCmd exitWithHelp versionTexthelpTextgetFile getModule getHintFile getExtensions readExtension ParseFlagscppFlagslanguageencodinginfixes parseFlagsparseFlagsNoLocationsrunCpp parseString parseFile parseResult applyFixity cheapFixities askFixitySettingInfixBuiltinMatchExpscopelhsrhssidenotesClassify severityShintSfuncSFuncName getSeverity isUnifyVar readSettings readHints readSetting readPragmareadSide readFuncsgetNameserrorOn findSettings findSettingfindExpdefaultHintName isClassify isMatchExp ParseErrormsgfuncseverityhintlocfromtonoteshowANSIshowEx isParseErrorrawIdeaideawarnerrHint CrossHint crossHintModuHintmoduHintDeclHintdeclHint readMatchreadRule dotVersion findIdeas matchIdeaunifyunifyDefunifyExpunifyPatchecksubst checkSide checkDefine performEval unqualify addBracketlistHintlistDecllistExp stringTypeisAppendchecks useStringuseListuseCons typeListChar typeString monadHintmonadExp monadCallbadFuncs monadReturn monadJoinmonadLetfromRet bracketHintbracket fieldDecldollar splitInfix namingHintnamingshorten suggestName replaceNamesPattern structureHinthintsasGuards asPatternpatHintexpHint importHintwrapsimplify simplifyHeadreducereduce1 hierarchy desugarQual multiExportnewNames pragmaHint pragmaIdea languageDupes strToLanguage optToLanguageextensionsHintminimalExtensionsusedhasSwarningsun&hasThasT2hasDupe duplicateHintfindaddduplicateOrdered niceLambda niceDotApp simplifyExpBranchBListBConsBNilListCase listRecHint matchListRecasDofindCasedelCons eliminateArgs findBranchfindPatreadPat lambdaHint lambdaDecl etaReduce lambdaExp fromLambda staticHints dynamicHints applyHintFileapplyHintStringapplyHintFiles executeHintsparseModuleFileparseModuleStringcontextallHintsclassifyResult _failures_totaltest testHintFiles testHintFiletestSourceFilestestInputOutputnameCheckHintstypeCheckHintscheckAnnotations parseTestFilecheckInputOutput writeTemplate writeReport writeIdea escapeHTMLfromSuggestionrunHints