public static Either <Ret, L> bind <R, L, Ret>(Either <R, L> either, Func <R, Either <Ret, L> > binder) => either.Bind(binder);
public static Either <L, Ret> bind <L, R, Ret>(Either <L, R> either, Func <R, Either <L, Ret> > binder) => either.Bind(binder);
public static Either <L, R> flatten <L, R>(Either <L, Either <L, R> > ma) => ma.Bind(identity);
public static Either <LRet, RRet> bind <L, R, LRet, RRet>(Either <L, R> either, Func <R, Either <LRet, RRet> > Right, Func <L, Either <LRet, RRet> > Left) => either.Bind(Right, Left);
public static Either <L, R> ForceLeft <L, R>(this Either <L, R> either, Func <R, L> force) { return(either.Bind( _ => Prelude.Left <L, R>(force(_)))); }
public static Either <L, R2> Use <L, R1, R2>(this Either <L, R1> self, Func <Either <L, R1>, Either <L, R2> > map) where R1 : IDisposable { var res = self.Bind(f => use(f, f1 => map(self))); return(res); }