レガシーコード生産ガイド

私に教えられることなら

cabal buildとDevelopment.Placeholdersを使うまで

ある程度すごいHaskell本で学んだので、Real World Haskellは最初からと第5章のJSONの操作からを並行して進めて行っている。

毎回ソース編集して:r連打したり、ghc --makeを実行するのも面倒なので、ソースを編集して保存したら自動実行でビルド&テストしたい。

そのためにはとりあえずcabal buildでビルドできるようにすればいいのかな?ということでプロジェクトディレクトリのルートでcabal initしてみた。ライブラリではなくexecutableを作成すると指定。

いくつかの質問に適当に答えて、main-is: Main.hsと指定、ソースはsrcディレクトリに置いているのでhs-source-dirs: srcと指定し、cabal configureした後cabal buildでproject/dist/build/name/nameにバイナリができていた。

undefinedの代わりに$notImplementedを使おうという記事を読んだことを思い出し、記事に書いてある通り先に型を書いて実装は$(todo foo)で後回しにしていこう、と思ったところいくつか抜けてハマったので記録しておく。

  • cabal install placeholdersしておく
  • プロジェクト名.cabalファイルにbuild-depends: base ==4.6.*, placeholdersと追記する
  • extensions: TemplateHaskell も追記
  • {-# LANGUAGE TemplateHaskell #-}
  • import Development.Placeholders

これでめでたくcabal build時に$notImplementedや$todoを警告してくれるようになった。 次はファイルの更新監視をしてみよう。

広告を非表示にする