この↓tweetが20くらい、favとRTされてる・・・
ScalaUtils `Or` is the data structure I have been trying to create for months. Easy to use and understand. URL
単にScalazのeitherでは・・・というツッコミなど
@BigJasonWebb @jboner This is just scalaz.\/...
上記のtweetでちょっとだけ議論続いてますがまぁだいたいそんな感じです、気になる人はreply追ってみてください
自分の第一印象は以下のような感じ
URL Scalatestが内部的に使ってるユーティリティを切り出して公開したものが少し話題になってて、そのOrやEveryに対して「名前がいいね」という意見と「ScalazのValidationや\/の劣化版では」という意見が交錯してます
2013-10-22 17:04:59 via web
\/よりOrのほうが名前としては確かにいいかもしれないし、丁寧に(scalazは12までしか無いのに)22引数まであれを用意してるのは好感が持てるけど(意図的だか無意識的にだかは分からないが)抽象度下がってるし、その「抽象化を犠牲にした利点」がなにかあるのかというとよくわからない
2013-10-22 17:09:07 via web to @xuwei_k
とにかく、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には色々あるらしいので、誰か試してみればいいんじゃないでしょうか。