Haskell で hlint を使用したコードチェック

Haskell のコードチェックを行う hlint というツールを試してみました。

[hlint のインストール]

$ cabal install happy
$ cabal install haskell-src-exts
$ cabal install hlint


cabal を使ってサクッとインストール。

[テストコード]

-- main.hs

main = do
    print $ plus 1 2
    print $ plus3 4
    where
        plus = \a b -> a + b
        plus3 = \x -> plus 3 x

[出力]

$ hlint main.hs
D:\test\main.hs:28:17: Error: Redundant lambda
Found:
  plus = \ a b -> a + b
Why not:
  plus a b = a + b

D:\test\main.hs:28:24: Warning: Avoid lambda
Found:
  \ a b -> a + b
Why not:
  (+)

D:\test\main.hs:29:17: Error: Redundant lambda
Found:
  plus3 = \ x -> plus 3 x
Why not:
  plus3 x = plus 3 x

D:\test\main.hs:29:25: Warning: Avoid lambda
Found:
  \ x -> plus 3 x
Why not:
  plus 3

4 suggestions


こんな感じで問題になっている箇所を警告し、更に解決方法まで教えてくれます。
頭がいいですね。
面白そうなので watchdogs.vim にも定義を書いておこう。