public abstract class Either<A,B>
extends java.lang.Object
Either type represents a value of one of two possible types (a disjoint union).
The data constructors; Left and Right represent the two possible
values. The Either type is often used as an alternative to
scala.Option where Left represents failure (by convention) and
Right is akin to Some.| Modifier and Type | Class and Description |
|---|---|
class |
Either.LeftProjection<A,B>
A left projection of an either value.
|
class |
Either.RightProjection<A,B>
A right projection of an either value.
|
| Modifier and Type | Method and Description |
|---|---|
<X,Y> Either<X,Y> |
bimap(F<A,X> left,
F<B,Y> right)
Map the given functions across the appropriate side.
|
<X> X |
either(F<A,X> left,
F<B,X> right)
The catamorphism for either.
|
boolean |
equals(java.lang.Object other) |
int |
hashCode() |
static <A,B> Either<A,B> |
iif(boolean c,
F0<B> right,
F0<A> left)
If the condition satisfies, return the given A in left, otherwise, return the given B in right.
|
abstract boolean |
isLeft()
Returns
true if this either is a left, false otherwise. |
abstract boolean |
isRight()
Returns
true if this either is a right, false otherwise. |
static <A,B> Either<A,B> |
joinLeft(Either<Either<A,B>,B> e)
Joins an either through left.
|
static <A,B> Either<A,B> |
joinRight(Either<A,Either<A,B>> e)
Joins an either through right.
|
static <A,B> F<A,Either<A,B>> |
left_()
A function that constructs a left value of either.
|
Either.LeftProjection<A,B> |
left()
Projects this either as a left.
|
static <A,B> Either<A,B> |
left(A a)
Construct a left value of either.
|
static <A,B,X> F<F<A,X>,F<Either<A,B>,Either<X,B>>> |
leftMap_() |
static <A,B> List<A> |
lefts(List<Either<A,B>> es)
Returns all the left values in the given list.
|
static <A> A |
reduce(Either<A,A> e)
Takes an
Either to its contained value within left or right. |
static <A,B> F<B,Either<A,B>> |
right_()
A function that constructs a right value of either.
|
Either.RightProjection<A,B> |
right()
Projects this either as a right.
|
static <A,B> Either<A,B> |
right(B b)
Construct a right value of either.
|
static <A,B,X> F<F<B,X>,F<Either<A,B>,Either<A,X>>> |
rightMap_() |
static <A,B> List<B> |
rights(List<Either<A,B>> es)
Returns all the right values in the given list.
|
static <A,X> Either<List<A>,X> |
sequenceLeft(List<Either<A,X>> a)
Sequences through the left side of the either monad with a list of values.
|
static <B,X> Either<X,List<B>> |
sequenceRight(List<Either<X,B>> a)
Sequences through the right side of the either monad with a list of values.
|
Either<B,A> |
swap()
If this is a left, then return the left value in right, or vice versa.
|
java.lang.String |
toString() |
<C> IO<Either<C,B>> |
traverseIOLeft(F<A,IO<C>> f)
Traversable instance of LeftProjection of Either for IO.
|
<C> IO<Either<A,C>> |
traverseIORight(F<B,IO<C>> f)
Traversable instance of RightProjection of Either for IO.
|
<C> List<Either<C,B>> |
traverseListLeft(F<A,List<C>> f)
Traversable instance of LeftProjection of Either for List.
|
<C> List<Either<A,C>> |
traverseListRight(F<B,List<C>> f)
Traversable instance of RightProjection of Either for List.
|
<C> Option<Either<C,B>> |
traverseOptionLeft(F<A,Option<C>> f)
Traversable instance of LeftProjection of Either for Option.
|
<C> Option<Either<A,C>> |
traverseOptionRight(F<B,Option<C>> f)
Traversable instance of RightProjection of Either for Option.
|
<C> Stream<Either<C,B>> |
traverseStreamLeft(F<A,Stream<C>> f)
Traversable instance of LeftProjection of Either for Stream.
|
<C> Stream<Either<A,C>> |
traverseStreamRight(F<B,Stream<C>> f)
Traversable instance of RightProjection of Either for Stream.
|
public final Either.LeftProjection<A,B> left()
public final Either.RightProjection<A,B> right()
public abstract boolean isLeft()
true if this either is a left, false otherwise.true if this either is a left, false otherwise.public abstract boolean isRight()
true if this either is a right, false otherwise.true if this either is a right, false otherwise.public final <X> X either(F<A,X> left, F<B,X> right)
left - The function to call if this is left.right - The function to call if this is right.public final <X,Y> Either<X,Y> bimap(F<A,X> left, F<B,Y> right)
left - The function to map if this is left.right - The function to map if this is right.public boolean equals(java.lang.Object other)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic final Either<B,A> swap()
public static <A,B> Either<A,B> left(A a)
a - The value underlying the either.public static <A,B> F<A,Either<A,B>> left_()
public static <A,B> F<B,Either<A,B>> right_()
public static <A,B> Either<A,B> right(B b)
b - The value underlying the either.public static <A,B,X> F<F<A,X>,F<Either<A,B>,Either<X,B>>> leftMap_()
public static <A,B,X> F<F<B,X>,F<Either<A,B>,Either<A,X>>> rightMap_()
public static <A,B> Either<A,B> joinLeft(Either<Either<A,B>,B> e)
e - The either of either to join.public static <A,B> Either<A,B> joinRight(Either<A,Either<A,B>> e)
e - The either of either to join.public static <A,X> Either<List<A>,X> sequenceLeft(List<Either<A,X>> a)
a - The list of values to sequence with the either monad.public static <B,X> Either<X,List<B>> sequenceRight(List<Either<X,B>> a)
a - The list of values to sequence with the either monad.public <C> List<Either<A,C>> traverseListRight(F<B,List<C>> f)
public <C> List<Either<C,B>> traverseListLeft(F<A,List<C>> f)
public <C> IO<Either<A,C>> traverseIORight(F<B,IO<C>> f)
public <C> IO<Either<C,B>> traverseIOLeft(F<A,IO<C>> f)
public <C> Option<Either<A,C>> traverseOptionRight(F<B,Option<C>> f)
public <C> Option<Either<C,B>> traverseOptionLeft(F<A,Option<C>> f)
public <C> Stream<Either<A,C>> traverseStreamRight(F<B,Stream<C>> f)
public <C> Stream<Either<C,B>> traverseStreamLeft(F<A,Stream<C>> f)
public static <A> A reduce(Either<A,A> e)
Either to its contained value within left or right.e - The either to reduce.Either to its contained value within left or right.public static <A,B> Either<A,B> iif(boolean c, F0<B> right, F0<A> left)
c - The condition to test.right - The right value to use if the condition satisfies.left - The left value to use if the condition does not satisfy.public static <A,B> List<A> lefts(List<Either<A,B>> es)
es - The list of possible left values.public static <A,B> List<B> rights(List<Either<A,B>> es)
es - The list of possible right values.public java.lang.String toString()
toString in class java.lang.Object