"dyre - A Dynamic Reconfiguration Library for Haskell"の紹介

dyreは、Haskell製のプログラムにおいてHaskellの文法で設定ファイルを記述することができるようになるライブラリ。

設定ファイルをHaskellで記述できると、Haskellの機能を使用して設定を記述できるので強力かつ柔軟な設定が可能になります。しかし、安直に再度コンパイルをして設定を反映するような仕組みにしてしまうと、一度プログラムを終了し、プログラムを再コンパイル、再度起動してこれまでの状態を手動で復元する、といった作業が必要になり、非常に面倒です(windowsのアップデートで再起動を促され、そのあと開いていたwindowをまた開き直すさまを想像してみてください)。そのあたりの処理を自動化し、ライブラリとしてまとめたのがdyre。firefoxは再起動時にタブの状態を記録しておいてそれを復元してくれますが、それと同じような形で動作するようなプログラムを作成できます。

dyreの特徴

  • 設定をHaskellで記述でき、そのコンパイルGHCに任せられる
  • 設定反映時、状態を保存・復元できる
  • 設定のコンパイルエラー時は以前の設定で動作を継続できる
  • Ubuntuでは動作確認ずみ、おそらくwindows,macでも動く

もともとxmonadというHaskell製のウィンドウマネージャでdyreの機能が実装されており、その設定反映部分をライブラリ化した形。それぞれHaskell製であるeditorのYi、browserのlambdacatもこのdyreを使用しています。

Haskellをこじらせた人には便利ですが、それ以外の人にはあまり便利といえないのが難点。ドメイン特化した設定ファイルと比べて理解する必要のある事柄は多く、GHCに依存してるのでバカでかい処理系を導入する必要もあり、Haskell使ってるような人の設定だと難解で参考にしづらい面も。

どんな人が設定を修正することになるのか考えて、Haskellが許容できるのであればなかなか面白いライブラリだと思います。

sample code

ドキュメントにあるコードを一部改変したもの。
プロンプトで文字を入力するとそれらが記録され、設定ファイルを用意したあとプロンプトで'recompile'と入力すると設定ファイルの反映が行われるようなもの。