Validation

Validation自体は、以下のようなsealed abstract classで、SuccessFailureという2つのサブクラスがあります。

sealed abstract class Validation[E, A] extends Product with Serializable
final case class Success[E, A](a: A) extends Validation[E, A]
final case class Failure[E, A](e: E) extends Validation[E, A]

つまり、scala.Eitherscalaz.\/と同型です。 クラス名から想像がつくように、成功と失敗を表現するのに用いられることが多いですsuccess-failure

Validationは、Applicativeのインスタンスですが、Monadのインスタンスにはなっていません。 無理やりMonadのインスタンスにすることは不可能ではありませんが、そうすると、そのMonadApplicativeのインスタンスに整合性がなくなってしましますconsistent-monad-applicative

success-failure. それ以外の使い方も可能です
consistent-monad-applicative. 型クラスの継承関係やlawの整合性については、別のところで詳細に説明する予定

results matching ""

    No results matching ""