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> X |
either(F<A,X> left,
F<B,X> right)
The catamorphism for either.
|
static <A,B> Either<A,B> |
iif(boolean c,
P1<B> right,
P1<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.
|
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 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 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, P1<B> right, P1<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.