ScalaUtilsというのがちょっとだけ話題になってたので、Scalazで書きなおしてみた

この↓tweetが20くらい、favとRTされてる・・・

s

単にScalazのeitherでは・・・というツッコミなど


上記のtweetでちょっとだけ議論続いてますがまぁだいたいそんな感じです、気になる人はreply追ってみてください


自分の第一印象は以下のような感じ

ss


とにかく、Scalazで、"Or And Every"のページの例
http://www.scalautils.org/user_guide/OrAndEvery
を書いてみました。*1

whenに相当するものは、ちょっとScalaz標準のものでは厳しいですね。ちょっとKleisli使ってやってみましたが、不自然というか使いにくいというか・・・。*2
whenのようなものを直接ScalazのValidationにメソッドを生やすべきかどうかも微妙なので、以前、whenと似たようなメソッドを自作した覚えがあります。

たしかにsequenceUとかよりは、validatedByやcombinedのほうが、validationに使うメソッド名としてはわかりやすいかもしれません(が、だからといって、個人的にはそれだけを理由に使う気にはなりません)



雑に説明しておくと、
ScalaUtilsのOrが、ScalazのeitherもしくはValidation
ScalaUtilsのEveryが、ScalazのNomEmptyList

でしょうか。"ScalaUtilsのValidation"に相当するものはScalazにはありません。
あと、ScalaUtilsのEveryは、サブクラスとしてOneとManyというように分かれています。
ところで、ScalaUtilsのEveryが、かなり多くの(Scala標準ライブラリと同じ名前の)メソッドを実装していて、すごいですね・・・。


(個人的にはそれほど使う気起きてないですが)、このOrやEvery以外にもScalaUtilsには色々あるらしいので、誰か試してみればいいんじゃないでしょうか。

*1:ScalaUtils作者、つまりScalatest作者がgist見たらしく、コメントついてた・・・

*2:そもそも、ValidationのflatMapは、7.1.0-M3以降deprecatedですし