Esempio n. 1
0
 public static CanCauseError <TOut> ConvertError <TIn, TOut>(this CanCauseError <TIn> error)
 {
     if (error.CausedError)
     {
         return(error.ConvertError <TOut>());
     }
     else
     {
         throw new InvalidCastException();
     }
 }
Esempio n. 2
0
 public static CanCauseError <C> SelectMany <A, B, C>(
     this CanCauseError <A> a, Func <A, CanCauseError <B> > func, Func <A, B, C> select)
 {
     if (a.CausedError)
     {
         return(a.ConvertError <C>());
     }
     else
     {
         var b = func(a.Result);
         return(b.CausedError ? b.ConvertError <C>() :
                select(a.Result, b.Result));
     }
 }
Esempio n. 3
0
 public static CanCauseError <TOut> Map <TIn1, TIn2, TOut>(
     this Func <TIn1, TIn2, TOut> f, CanCauseError <TIn1> x, CanCauseError <TIn2> y)
 {
     if (x.CausedError)
     {
         return(x.ConvertError <TOut>());
     }
     else if (y.CausedError)
     {
         return(y.ConvertError <TOut>());
     }
     else
     {
         return(f(x.Result, y.Result));
     }
 }
Esempio n. 4
0
 public static CanCauseError <TOut> Map <TIn, TOut>(
     this Func <TIn, TOut> f, CanCauseError <TIn> x)
 {
     return(x.CausedError ? x.ConvertError <TOut>() : f(x.Result));
 }