scalaz-contrib と scalaz-specs2

これは Scalaz Advent Calendar 2012 の19日目です。

というわけで、scalazとは別に、新しいリポジトリできました。現状まだあまりソースコードの量ないですが。まだできたばかりで、現状これ書いている時点ではstableなversionはリリースされてないっぽいです。また今後も色々変動ありそうですね。

もともとのモチベーションは、以下のように、いくつかScalazを利用したライブラリがあって

https://github.com/travisbrown/instancez
https://github.com/teamon/play-scalaz/
https://github.com/stew/scalaz-gll
https://github.com/robinp/akkaz

それらで使う共通のテスト用のモジュールを、exportするべきという話でした。それで、scalaz本体のtestsのprojectのSpec.scala
https://github.com/scalaz/scalaz/blob/v7.0.0-M6/tests/src/test/scala/scalaz/Spec.scala
https://github.com/larsrh/scalaz-specs2/commit/5bdfc29cc3c2b013201a9af0c6c63ba620406507
を持ってきたわけです。Scalazには (scalaz本体以外の部分でも使われることを想定した) Scalacheck-bindingというモジュールが既にありますが、他にもexportして使えそうな部分を増やそうという話です。



それともうひとつ、こちらも、つい最近作られたscalaz-contribというリポジトリ
https://github.com/larsrh/scalaz-contrib

こっちは、Scala本体に入れるほどではないけれど、Scalazを使った便利なユーティリティを作っていく感じらしいです。今後、scalaz-contribからscalaz本体に移動したり、逆にscalaz本体から切り離してscalaz-contribに移動したり色々動きがありそうです。
既に実際に、以下のようなこともありました。

ところでscalaz-contribも、テストのところでSpec.scalaを本体からコピーしていますが

https://github.com/larsrh/scalaz-contrib/blob/951a48fd31a3a64de514eb9e1fa586f64846673f/scala210/test/scala/Spec.scala

今後、scalaz-contribとscalaz-specs2の依存関係とかどうなるんでしょうかね(今はどちらも依存していない)
scalaz-contribは、現状ではScala2.10のTryやFutureに対しての型クラスがあったり、Validationを返すユーティリティメソッドがあるようです