scala.Either (Scala)
scala.Either
Data.Either (Haskell)
Data.Either
[1]
interface DisjointUnion<A, B> { <X> X fold(Func<A, X> left, Func<B, X> right); }
(Java)
[1] interface Func<A, B> { B apply(A a); }
interface Func<A, B> { B apply(A a); }