public static Either <A, B> Right <A, B>(this B b) { return(Either <A, B> .Right(b)); }
public static Either <A, B> Right <A, B>(this B b) => Either <A, B> .Right(b);
public static Either <X, B> Select <X, A, B>(this Either <X, A> k, Func <A, B> f) { return(k.Fold(x => Either <X, B> .Left(x), a => Either <X, B> .Right(f(a)))); }
public static Either <X, A> SelectLeft <X, A, B>(this Either <B, A> k, Func <B, X> f) { return(k.Fold(x => Either <X, A> .Left(f(x)), a => Either <X, A> .Right(a))); }