Changelog for HLint

1.9.31
    #222, don't suggest removing ~ if the Strict extension is on
1.9.30
    #220, fix incorrect hints of foldr/foldl on a tuple accumulator
1.9.29
    #219, add warnings about foldable methods on tuple
    Put warnings before suggestions in the HTML report
1.9.28
    #215, spot newtype deriving inside classes
1.9.27
    #203, avoid recompiling everything twice
    #213, don't suggest removing bang patterns on let
    Rename HintStructure to HintPattern
    #208, add an hlint function to the HLint3 API
    #1, warn about unused DefaultSignatures extension
    #137, add -XHaskell2010 and fix -XHaskell98
    Allow checking even if a function has different arities
    #193, don't warn on a -> (b -> c), it's sometimes sensible
    #182, make parse errors severity Error
    #181, warn on otherwise in a pattern variable
    #163, eta reduce fun x = f $ x
    #132, don't ever suggest liftM
    #99, downgrade built in hints, Error => Warning => Suggestion
    #99, add a Suggestion level severity
    #207, make sure you close file handles
    #205, add hint compare x y == EQ and /=
    #204, add hint concatMap id ==> concat
    #202, include refactorings is --json output
1.9.26
    #200, fix all lint warnings
    #143, expose argsSettings
1.9.25
    #192, fix stdin output and --refactor
1.9.24
    #188, improve spotting redundant brackets around patterns
    #138, reenable redundant where hint
1.9.23
    #184, require haskell-src-exts-1.17
    #183, allow test_ as a prefix
1.9.22
    Don't suggest redundant lambda on view patterns
    Add --no-exit-code flag
    #174, don't suggest string literals
    #175, disable 'rec' stealing extensions by default
    #170, add hints for eta-reduced operators
    #149, integrate a --refactor flag
    #147, fix the -fglasgow-exts hint
    #140, better name for moving brackets to eliminate $
    Extra hints for <$>
    Remove a redundant fmap hint
    #131, add =<< rules in addition to >>=
1.9.21
    #130, ignore a BOM if it exists
    #128, don't find files starting with . when searching directories
    Suggest concat even if the [] is written ""
1.9.20
    #122, fix the zipWith/repeat hint
1.9.19
    #119, don't remove RecursiveDo if they use the rec statement
    Add a suggestion concatMap/map ==> concatMap
1.9.18
    More GHC 7.10 warnings and build support
1.9.17
    #116, support hscolour-1.21
1.9.16
    #108, make "hlint ." work again
1.9.15
    #106, avoid warnings with GHC 7.10
    #105, build with GHC 7.10
1.9.14
    #649, don't suggest const for values using RecordWildCards
1.9.13
    #97, remove the encoding bits of the API
    #98, add an HLint3 prototype API
    #93, make the --quickcheck tests work on GHC 7.8
    Add --tempdir flag to the test mode
1.9.12
    #96, fix the --utf8 flag
    Make Encoding an alias for TextEncoding
    Default to UTF8 encoding
1.9.11
    #95, don't suggest camel case for names containing digits
    Add a dependency on the extra package
    #92, use a new way for determining the color default
    Add a dependency on ansi-terminal
1.9.10
    Spot unsafePerformIO without NOINLINE
1.9.9
    #89, fix compiling the executable with --flag=-gpl
1.9.8
    #82, don't crash on XmlHybrid modules
    #88, allow avoiding HsColour, as it is GPL licensed
    #87, don't push if down, since it can be type incorrect
1.9.7
    #86, don't use color unless $TERM claims to support it
1.9.6
    #85, fix the free variable matching check for lambda
    #84, suggest fmap for Either
    Make --json put each hint on a different line
    Support -X for extensions to the hse mode
1.9.5
    Remove support for GHC 7.2
    Upgrade to haskell-src-exts-1.16
1.9.4
    #81, fixes for GHC 7.9
    #78, add hints for list patterns
    #72, make --color the default on Linux
1.9.3
    #73, fix multithreading and exceptions
1.9.2
    #68, add --no-summary
1.9.1
    #65, add flip (>>=) ==> (=<<) and the reverse
    #61, add --json flag
1.9
    Remove not (isControl x) ==> isPrint (not true for '\173')
    #57, warn on invalid pragmas
    Make the API pass and require comments
    #59, make sure qualified operators match properly
    Rename notTypeSafe annotation to noTypeCheck
    Remove an invalid rule suggesting tanh
    #13, add a --quickcheck flag to test the hints
    Add --typecheck flag to test mode to type check the hints
    Remove incorrect for intercalate to unlines
    #37, remove incorrect hint for isAlphaNum
    #45, add mapMaybe id ==> catMaybes
    #42, add some repeat hints
1.8.61
    #40, allow haskell-src-exts-1.15
    Don't detect redundant Generics extension
1.8.60
    #33, add --cpp-file to preinclude a file
    #34, add back --quiet flag
    #639, don't suggest evaluate, because not all Monad's are IO
    #31, delete the elem/notElem hints
    #30, remove weird "free module" matching
    #15, add prototype grep mode
    Change to make test a separate mode
    #12, more list based suggestions
    #637, turn off QuasiQuotes by default
1.8.59
    #27, fix up directory file searching
1.8.58
    Move the API to Language.Haskell.HLint2
    #638, ensure $! doesn't break strictness with strict fields
    #24, don't remove DeriveFunctor even when only on a newtype
    #22, turn off UnboxedTuples by default
    #21, strip /* C style */ comments
    #635 and #18, require cpphs-1.18.1
    Switch to CmdArgs for command line parsing
    Remove -x as a synonym for --cross
1.8.57
    #6, add a preview of an API
    #331, improve parse error locations for literate Haskell
1.8.56
    Remove support for GHC 6.12 and below
    #317, tone down the void hint
    #16, match not . not (and reverse . reverse etc)
    Suggest <$> instead of fmap f $ ...
    Tweak some priorities, make >=> a warn and void an error
    #3, make top of the file ANN pragmas work
    #10, add a suggestion to use unlines
    #11, add a few hints about characters
    #8, add CHANGES.txt to the Cabal package
1.8.55
    #627, fix the UnboxedTuples extension warning
1.8.54
    Fix a bug when suggesting const
1.8.53
    Fix some corner cases when suggesting foldr etc.
    #517, don't introduce new free variables in a replacement
1.8.52
    #2, Generic is not newtype derivable
1.8.51
    Upgrade to haskell-src-exts-1.14
1.8.50
    Eliminate upper bounds on all dependencies
    #617, fix up notIn to take account of Template Haskell variables
    #573, suggest removing various deriving language extensions
1.8.49
    Remove ^^ ==> ** hint
    Remove a duplicate sqrt hint
    Ensure that --test failures throws an error
    Fix up the copyright year in --help
1.8.48
    Brackets at the root of annotations are fine
    Reduce a few more lambda expressions
1.8.47
    #613, compatibility with base-4.7
1.8.46
    Remove incorrect isPrefixOf hints
    #586, add span/break/takeWhile/dropWhile hints
    #588, add sort/reverse hints
    #601, add replicate/map/repeat hints
    Add a hint about reverse/reverse
    Add side as an alias for _
    Add hint as an alias for error
1.8.45
    #600, hints for unnecessary lazy annotations
1.8.44
    #598, warn on unnecessary bang patterns
1.8.43
    Change some hint error/warning levels
1.8.42
    Allow cpphs-1.16
1.8.41
    #586, add a rule for takeWhile/dropWhile ==> span
    #522, add hints for the state monad
    #499, fix up the test suite
    Fix the side conditions for the `isPrefixOf` hint
    Add hints about take/drop on non positive numbers
    Add isNat/isPos/isNeg/isNegPos as notes
    Make the notes a structured type
    Add --proof feature
    Retire the Prelude.catch hint
    Additional boolean equality hints
1.8.40
    #585, lots of additional list based hints
1.8.39
    #582, don't suggest renaming with trailingHashes#
1.8.38
    #578, treat _ bindings differently in lambdas
1.8.37
    #575, allow cpphs-1.15
1.8.36
    Make --with imply no default Hint files
1.8.35
    #567, avoid duplicate hints around (.) hints
1.8.34
    Switch license from GPL to BSD3
1.8.33
    Lots more hints on laziness, foldable and a few others
    Use mapM_ etc in more situations, when using explicit >>=
1.8.32
    Add notes about how to deal with imported fixites
    Add a --with flag for passing settings on the command line
    #563, make sure TypeSig hints get the right function name
    Update the copyright year to 2012
    #564, allow brackets and type signatures on annotations
    Add a note that about using !! if the index is negative
1.8.31
    Avoid incomplete patterns when reading ANN pragmas
    #555, top-level expressions require TemplateHaskell
1.8.30
    Add elemIndex/elemIndices hints
    Allow cpphs-1.14
    #551, allow case_ as a name with an underscore
1.8.29
    Allow hscolor-1.20.*
    #574, add a hint to for mapM/zip ==> zipWithM
1.8.28
    Fix a bug, >=> hint was missing check about removal of free var
1.8.27
    Allow haskell-src-exts-1.13.*
1.8.26
    Allow haskell-src-exts-1.12.*
    Don't suggest redundant brackets when turning ++ into :
    Add hints suggesting >=> and <=<
1.8.25
    Update the copyright year in the Cabal file
    Allow transformers-0.3.*
1.8.24
    #531, Make hlint.ghci well formed again
1.8.23
    Add hints for redundant seq/evaluate using isWHNF
    #526, don't hint for return $! (x :: Int)
1.8.22
    Add hint for $! where the RHS is not a variable
1.8.21
    #508, add lots of hints from the base library
    #317, add hints for a >> return () to void
    Add a fromMaybe/fmap ==> maybe hint
    #304, don't backet tuple sections
    Add foldl (++) [] ==> concat
    #512, detect unnecessary case construct
    When finding hints, don't abort on a parse error
    #507, add exitSuccess hint
    #505, suggest record patterns
1.8.20
    #500, make sure eta reduction has position information
1.8.19
    #498, eta reduce even if there is a where block
    #497, don't produce an incorrect lambda when suggesting flip
1.8.18
    #438, use Foo.Bar to mean Foo/Bar.hs
    Add a --path command line option to say where files live
    #441, avoid bad matches due to automatically eta reducing rules
    #489, import Foo as Foo is redundant
    #481, suggest liftM instead of fmap when using the Monad laws
1.8.17
    #479, allow - as the file to specify using stdin
1.8.16
    #478, allow cpphs-1.13.1
    Never suggest view patterns (they aren't sufficiently better)
    Don't suggest use of Data.Ord.comparing, using `on` is better
    Only suggest elem/notElem on 3 or more items
1.8.15
    Add --cpp-ansi to turn on ANSI compat in cpphs
1.8.14
    #455, GHC 7.2 compatibility
    Add lots of hints from Lennart Augustsson
1.8.13
    #302, add a backup fixity analysis, if the HSE one fails
    Fix x /= y || x /= z ==> x `notElem` [y,z], should be &&
1.8.12
    Allow cpphs-1.12
1.8.11
    #440, suggest removing redundant brackets under do
    #439, don't add redundant brackets under do
1.8.10
    Upgrade to hscolour-1.19
1.8.9
    #436, add a hint about mapMaybe/map
    Upgrade to haskell-src-exts-1.11.1
    Add a --cross flag, to detect hints between multiple modules
    #428, don't suggest using String in an instance head
1.8.8
    #384, suggest collapsing multiple imports/exports
    #374, don't suggest the removal of necessary brackets
    #337, suggest Control.Exception.catch instead of Prelude.catch
    #412, add hints based on Control.Exception
    #378, suggest removing fromInteger/fromIntegral on literals
    #369, add notes to a few hints about possible pitfalls
    #409, fix a few cases where definitions suggested themselves
    #410, Support test* as ignored items in settings files
    #414, add isLit* pattern, and hint about ^^ ==> **
    #420, make the suggestion to use let a warning
    #408, rework the when/unless hints, don't suggest on itself
    Add duplicate detector, for copy/pasted code
    #285, don't show duplicate filepath separators
    If the user enters directories containing no files then say
    Make suggesting curry/uncurry a warning instead of an error
1.8.7
    Relax the transformers dependency, works with 0.0.* and 0.1.*
1.8.6
    Export suggestionSeverity/Severity from the API
    Allow hint imports with "hlint", as well as the existing "hint"
1.8.5
    Update the copyright year to 2011
    #400, support more encoding strings, give useful errors
    #401, rename the report template to report_template.html
    Replace filter f x /= [] with any f x, and 2 more similar
1.8.4
    #308, allow haskell-src-exts-1.10.1, which parses Unicode better
    import qualified Char ==> import qualified Data.Char as Char
    #393, fix suggestion for import IO, requires more than System.IO
    #376, note that RecordWildCards implies DisambiguateRecordFields
1.8.3
    Allow uniplate-1.6
    Switch from mtl to transformers
    #373, require haskell-src-exts-1.9.6
    Add a type signature for GHC 7
    Suggest [x | x <- xs] ==> xs, if x is a variable
1.8.2
    #371, foo (\x -> y :: Int -> Int) is not a redundant bracket
    Add a hint to use just equality rather than isJust/fromJust
1.8.1
    Massive speed up for files with many naming hints
    #361, keep module names when suggesting infix
    Add support for wildcard matching on module names
    #357, don't camel case suggest on FOO_A
    #370, fix building with GHC 6.10.4
    #313, upgrade to haskell-src-exts-1.9.4
    Workaround for #358, disable empty where hints
    #355, make "--ignore=Parse error" work
    Add --cpp-simple to run a simple CPP to strip lines begining #
    Add bracketing information if the parent is a case
    Suggest intercalate
1.8
    Make --test --hint=file typecheck a file for valid hints
    #347, Suggest use of otherwise, instead of True, in pattern guards
    Add hints about redundant where statements
    Suggest removal of redundant guards
    Make hints about guards work on patterns/infix matches/case alts
    Make finding guards look a child functions
    Correctly collapse functions and lambdas using the same patterns
    Suggest promoting patterns bound to lambdas to functions
    Allow collapsing lambdas sharing pattern variables correctly
    #344, only give one warning for multiple collapsable lambdas
    #300, substantially improve module name resolution with imports
    BREAKING: imports in hint files require import "hint" HintFile
    #335, redundant id should only generate one warning
    Add a hint for using map (f &&& g)
    #328, for foo'bar suggest the naming fooBar
    #323, detect redundant brackets in field declarations
    #321, force the whole file before displaying a parse error
    Make --find more robust, fixes a potential parse error
1.7.3
    Upgrade to hscolour-1.17
1.7.2
    #318, match rules by expanding out (.)
    #319, don't remove lambdas on the right of infix operators
1.7.1
    Add a --quiet flag, to supress stdout (mainly for API users)
1.7
    Add support for HLint.Builtin.All
    Fix crash on (\x -> x)
    Make the library correctly honour the data directory
    Improve the manual, mainly language changes and hyperlinking
    Fix a bug in ListRec, could have _recursive_ in the result
    #315, spot list rec hints through $ and let
    Add hints based on (f $) ==> f, and change in ListRec hints
    Changes to the lambda suggestions, now gives a few more hints
    Don't suggest importing modules in old-locale/old-time
    Make the API return the suggestions, rather than just the count
    #278, add -XNoCpp to disable the C preprocessor
    #279, add -XExt/-XNoExt to choose extensions
    Remove some redundant brackets in type replacements
    #286, remove redundant brackets in match
    Additional bracket removal, application under sections
    #299, rework hints to use flip (suggest infix in some cases)
    Add some fromMaybe hints
    Fix bug where hints didn't always get names
    #306, make --find use the hints if there are files specified
    Upgrade to haskell-src-exts-1.9
    #303, allow fixities to be specified in hint files
1.6.21
    #287, warn about Haskell 98 imports
    #297, add a hint to use mplus
    #288, detect redundant brackets under a lambda
    #302, remove error about ambiguous fixities
    #281, enhance the redundant monad return warnings
    #293, eliminate _noParen_ from the result
    #284, eliminate ViewPatterns from FindHints, hits compiler bug
    #283, don't suggest removal of RecordWildCards
    Add some hints about concat and (++)
    #273, require haskell-src-exts >= 1.8.2
1.6.20
    #275, add more acknowledgements (still very incomplete)
    #254, remove the foldr1/map hint
    Compress nested lambdas, \x -> \y -> ... ==> \x y -> ...
    Fix minor bug on \x -> \x -> foo x x
    #274, add redundant bracket inside record update/construct
    #272, don't mess up creating sections from qualified names
    Add some hints to suggest elem
    Add Paths_hlint to the .cabal file, or the library doesn't link
    #271, rewrite the match engine in terms of SYB
1.6.19
    #251, add automatic definition hunting with --find
    #268, rewrite the (.) expansion in hints to fix various bugs
    #269, replacing a case with an if should generate one hint
    Document the ANN pragmas
    Require haskell-src-exts-1.8.1
1.6.18
    Remove a hint replacing do x <- foo; bar x with foo >>= bar
    #263, support CPP files more fully
    Upgrade to hscolour-1.16
    Upgrade to cpphs-1.11
1.6.17
    Force cpphs-1.10, since 1.11 breaks the interface
    More hints from the Data.Maybe module
    #262, add support for the TupleSections extension
    #264, upgrade to haskell-src-exts-1.8.*, fixes QuasiQuote pos
    Upgrade to cpphs 1.10
    #266, don't match hints that appear to be the definitions
    #248, tone down the eta reduction hints
    Add support for WARNING pragma's to reclassify hints
    Support ignoring hints on types
    Give better error messages on incorrect settings files
    Add temporary haskell-src-exts 1.5/1.6 compatibility
    #327, add hints to use expressions infix
    #240, if a then True else False no longer suggests a || False
    Upgrade to haskell-src-exts-1.7.*
    #236, support changing the text encoding with --encoding/--utf8
    #260, generate nicer lambdas for (($) . f)
    Add the hint (($) . f) ==> (f $)
1.6.16
    Further performance enhancements (for details see my blog)
    Update to uniplate 1.5.* (fixes performance bug)
    Improve speed based on profiling (roughly twice as fast)
    #245, add hints for excess brackets in types and patterns
    Make 100% redundant brackets an error
    Fix bug where qualified names did not match
    Remove dependency on SYB
    #234, allow TH top-level splices for ignore
    #110, add tests for ignoring commands
1.6.15
    Upgrade to uniplate 1.4.* (fixes performance bug)
    #192, make HLint into a fairly basic library
    Add --datadir to allow running with a different data directory
    #254, eliminate foldl/map fusion rules (which were untrue)
    Fix a few typos in the hint rules
    Upgrade to uniplate 1.3.*
    Upgrade to haskell-src-exts 1.6.*
    Add a .ghci file snippet
    #247, Fix bug matching expressions containing position info
1.6.14
    Upgrade to haskell-src-exts 1.5.*
1.6.13
    #246, redundant brackets in [(...)]
    Add fold/map fusion hints
    Don't suggest namings that are already used in the module
    #239, Add suggestions of and/or on foldl
    Add --extension flag, to find files not named .hs/.lhs
    Only activate the builtin hints when they are imported
    Fix matching bug, said "Use flip" on "\v -> f v . g"
    Suggest changing some pattern guards to view patterns
1.6.12
    Fix a bug with ignored hints being written to reports
    Upgrade to haskell-src-exts 1.3.*
    #228, suggest let instead of <- return in do statements
    #229, suggest comparing
    Qualify all non-Prelude function suggestions
    #225, Add redundant flip hint
    #226, Add ((+) x) ==> (x +)
    #223, TemplateHaskell may allow other extensions via code
    Fix incorrect suggestion on do x <- f ; g x x
    A few small additional hints (use flip, redundant id)
1.6.11
    Don't perform type eta reduction
1.6.10
    Fix bug, eta reduction on chained infix operators, i.e. x#y#z
1.6.9
    #217, don't suggest eta reduction on - or +
    Fix bug, PatternGuards under case alternatives were ignored
1.6.8
    #213, upgrade to cpphs 1.9
    Add suggestion to replace lambda with operator sections
    Fix bug, ''Name decided TemplateHaskell was unnecessary
    HPC statistics, and increase in test coverage
    Fix bug, import A as Y; import A gave import A, missing the as Y
    Fix bug, type Foo a = Bar a a incorrectly suggested eta reduce
1.6.7
    NOTE: #213 has not been fixed, cpphs can cause hangs
    Add threaded flag to Cabal to disable -threaded mode
    #212, fix crash
    Fix bug, incorrectly decided TemplateHaskell was unnecessary
1.6.6
    Upgrade to hscolour 1.15
    Add a hint for using unless
    #211, add hints for unused extensions
    #188, add pragma hints
    Add a few additional hints (Functor laws)
    #137, add cpphs support
    #189, give hints for redundant imports
    Upgrade to haskell-src-exts 1.1.*
1.6.5
    #206, better presentation of parse errors
    #208, give the correct precedence to ==> in source files
1.6.4
    Start of changelog
