-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 On Sat, Dec 20, 2008 at 4:55 AM, Neil Mitchell wrote: > Hi, > > I am pleased to announce HLint, a tool for making suggestions to > improve your Haskell code. Previously this tool was called Dr Haskell > and depended on a working installation of Yhc - both of those have now > changed. HLint requires GHC 6.10*, and to install simply type: > > cabal update && cabal install hlint > > If you haven't yet installed the cabal command, instructions are here: > http://ghcmutterings.wordpress.com/2008/11/10/bootstrapping-cabal-install/ > > As an example of what HLint does, running "hlint darcs-2.1.2" over the > latest stable release of darcs gives 385 suggestions, including: > > darcs-2.1.2\src\CommandLine.lhs:46:1: Use a string literal > Found: > [' ', '\t', '"', '%'] > Why not: > " \t\"%" > > darcs-2.1.2\src\CommandLine.lhs:49:1: Eta reduce > Found: > quotedArg ftable > = between (char '"') (char '"') $ quoteContent ftable > Why not: > quotedArg = between (char '"') (char '"') . quoteContent > > darcs-2.1.2\src\CommandLine.lhs:94:1: Use concatMap > Found: > concat $ map escapeC s > Why not: > concatMap escapeC s > > To see all the hints in a nice interactive document visit > http://www-users.cs.york.ac.uk/~ndm/hlint/hlint-report.htm > (recommended if you are thinking of trying out hlint) > > All necessary links, including a manual, hackage links, bug tracker > and source code can be found from the tool website: > http://www-users.cs.york.ac.uk/~ndm/hlint/ > > Acknowledgements: Niklas Broberg and the haskell-src-exts package have > both been very helpful. The darcs users mailing list gave many good > suggestions which I've incorportated. > > Please direct any follow up conversations to haskell-cafe@ > > Thanks > > Neil > > * Why GHC 6.10? View patterns.
Hi, Neil. Thanks for the tool; it found some worthwhile changes in my projects. But a few points: 1) How does one actually use the CLI tool? You didn't say. It *seems* that one just feeds it a list of random filepaths, so on Mueval, say, the command would be 'hlint main.hs Mueval/*.hs' (and not, say, 'hlint mueval.cabal'). But I'm not actually sure. 2) I think I found a parsing bug. One line in Mueval/Interpreter.hs runs: > fmap (take n exceptionMsg ++) $ render' (n-length exceptionMsg) s which gives the error: > Mueval/Interpreter.hs:145:59: Parse failure, Parse error > No relevant suggestions Adding spaces between 'n' and 'length', so it reads: > fmap (take n exceptionMsg ++) $ render' (n - length exceptionMsg) s lets hlint parse and suggest for it. - -- gwern -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEAREKAAYFAklM+kwACgkQvpDo5Pfl1oKDhwCfRgQutbvr9QbKvbLJlbhdla2Z absAniWC+ksXHhfbunsdOsnmG69lppFZ =X9uv -----END PGP SIGNATURE----- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe