Disjunction と Either の違い

Safari Books Online で検索したところ、以下の記述が見つかった。

Disjunction is conceptually similar to Either, which can be used to represent one of two possible types. Disjunction is different from Either because its operations are right-biased. (6. Concurrency in Scala, Scala High Performance Programming)

scala の API ドキュメントでも Either の「Left を例外処理、Right を正常処理」は慣習的な取り決めのように読み取れる。

Convention dictates that Left is used for failure and Right is used for success. Scala Standard Library 2.12.0 - scala.util.Either

上記から、個人的に以下のような理解をしている。

  • Disjunction はもともと Right を正常値とするように設計されている。
  • Either は convention として慣習的に Right を正常処理とするように使われている(ことが多い)。

※会社の Scala エキスパートによると「2.12からEitherもright-biasedなので古い本は窓から投げ捨てて下さい」だそうだ。(^_^;