作成: 2017-10-07

Haskellを書くときはstylish-haskellとhlintを使って労せずして綺麗なコードを書きましょう

3年前ぐらいからHaskellを書くときには, stylish-haskellとhlintを使ってコードを書いています.

これらを使うと, 私のようにツールに頼ってコードを書いているだけでも｢コードが綺麗｣と褒めてくれるようになります. しめしめ.

他にHaskellを書く時に良いツールがあれば是非教えてください.

stylish-haskell jaspervdj/stylish-haskell: Haskell code prettifier stack install stylish-haskell でインストール可能です. stylish-haskellはコード整形ツールです. このツールは importの揃え

プラグマの揃え, 及び不要なプラグマの削除

無意味な空白の削除

レコードの縦揃え

パターンマッチの揃え などをしてくれます. 詳しくは公式サイトを見るのが良いと思います. この記事いる? この中でもimportの揃えは特異で, 単純に行を辞書順に揃えるのではなく, qualifiedが無いimportにもqualified文の空白を入れて, ちゃんとqualifiedを無視したモジュールの辞書順に行を並べてくれます. また, 選択importやasパターンも全体的に見て縦に揃うように空白が入ります. プラグマもソートして適切な空白を入れてくれるため, コードの冒頭部分が格段に見やすくなります. また ｢言語拡張をプラグマではなくcabalの default-language でたくさん指定しているから外部のツールが使えない｣ という人もstylish-haskellなら安心です. stylish-haskell --defaults > .stylish-haskell.yaml でプロジェクトのトップディレクトリに設定ファイルを生成して, 言語拡張をyamlのリストに書き込めば使えます. またもちろん, その他の細かい挙動もこのファイルを設定することでいじることが可能です. コマンドラインでソースを食わせて標準出力にコードを流したり, -i オプションで書き換え一括リファクタリングをすることも可能です. しかし, コード整形は編集と同時に行ってほしいですよね. もちろん可能です, stylish-haskellは私の調べた限り Vim

Emacs

Atom

VSCode

IntelliJ IDEA(intellij-haskell) の主要テキストエディタと協調して使うことが出来るようです. 特にEmacsは楽でHaskellの編集モードhaskell-modeがサポートしているため, ( custom-set-variables ' ( haskell-stylish-on-save t )) と設定するだけでセーブ時にstylish-haskellで整形してくれるようになります. 全てのHaskellプログラマにコードを読みやすくするために使って欲しいツールです. 切実に使って欲しいです, モジュールの import が読みにくいことがよくあります. ただ, stylish-haskellはモジュールの記述部分などは揃えてくれますが, コードの細かい内部にはあまりツッコミを入れてくれません. そういうものが欲しい時は, 以下のhlintが使えます.