>>641
実はそれ考えてプログラムしてみたんだ。
確かにちゃんと分離できる。

が、データベースの制御について本やネットで調べてみると、
オープンとクローズは頻繁に行わない方が良いらしい。

今回のアプリはデータの表示、書き換えがユーザーの手によって頻繁に起こるから、
オープン/クローズは Main 関数内で一度ずつ行って、
その間で Conduit を使ってデータや、削除などの制御情報を流そうかと。

そうすれば、[Model] の表現方法が変わっても、
[Model] と、全体を取り持つ Main 関数の2つだけ変えればいいはず。

もし改善策が思いつかなければ、

(1) データベースを制御するごとにオープン/クローズするように諦めるか、
(2) Persist + Conduit の組み合わせを諦めるか、
(3) データベースを使うのを諦めるか

の3択になって、まぁ仕方ないかなと思ってる。

Persist + Conduit はもともと Yesod で開発されたものだけど、
Yesod のモデルではもしかしてオープン/クローズは繰り返すものなのかな。