\/
- ソースコード
- scaladoc
- 記号のクラス名でとっつきにくそうですが、かなり多く使われている、とても便利なクラスです
- 読み方は
Disjunction
あるいはEither
です - 数学の論理和 ∨ の記号由来です
\/
自体はsealed abstract class
であり、\/-
と-\/
というサブクラスが存在する- 右に
-
がくっついているのがRight、左に-
がくっついているのがLeft
import scalaz._
val a: Int \/ String = \/-("foo") // rightを生成
// a: Int \/ String = \/-("foo")
val b: \/[Int, String] = a // 型は中置記法で書かれることが多いが、中置記法を使わなくても書ける
// b: Int \/ String = \/-("foo")
val c: Int \/ String = \/.right("foo") // rightというメソッドもある
// c: Int \/ String = \/-("foo")
val d = a.map(_ + "bar") // rightをmapすると反映される
// d: Int \/ String = \/-("foobar")
val e: Int \/ String = \/.left(42)
// e: Int \/ String = -\/(42)
e.map(_ + "bar") // leftをmapしても変わらない
// res0: Int \/ String = -\/(42)
e.leftMap(_ * 100) // leftの場合にmapするには、leftMapを使う
// res1: Int \/ String = -\/(4200)