コード例 #1
0
 public bool Eq(Either <X, A> t1, Either <X, A> t2)
 {
     return(t1.Cata(
                x1 => t2.Cata(
                    x2 => xeq.Eq(x1, x2),
                    a2 => false),
                a1 => t2.Cata(
                    x2 => false,
                    a2 => aeq.Eq(a1, a2))));
 }
コード例 #2
0
ファイル: Predicates.cs プロジェクト: jedahu/Jib
 public static bool LeftTest <X, A>(this Either <X, A> either, Func <X, bool> predicate)
 {
     return(either.Cata(predicate, a => false));
 }
コード例 #3
0
ファイル: Predicates.cs プロジェクト: jedahu/Jib
 public static bool RightTest <X, A>(this Either <X, A> either, Func <A, bool> predicate)
 {
     return(either.Cata(x => false, predicate));
 }
コード例 #4
0
ファイル: Morphisms.cs プロジェクト: jedahu/Jib
 public static IEnumerable <X> LeftEnumerable <X, A>(this Either <X, A> either)
 {
     return(either.Cata(
                x => x.PureEnumerable(),
                a => Enumerable.Empty <X>()));
 }
コード例 #5
0
ファイル: Morphisms.cs プロジェクト: jedahu/Jib
 public static IEnumerable <A> RightEnumerable <X, A>(this Either <X, A> either)
 {
     return(either.Cata(
                x => Enumerable.Empty <A>(),
                a => a.PureEnumerable()));
 }
コード例 #6
0
ファイル: Morphisms.cs プロジェクト: jedahu/Jib
 public static Maybe <X> LeftMaybe <X, A>(this Either <X, A> either)
 {
     return(either.Cata(
                Maybe.Just,
                a => Maybe.Nothing <X>()));
 }
コード例 #7
0
ファイル: Morphisms.cs プロジェクト: jedahu/Jib
 public static Maybe <A> RightMaybe <X, A>(this Either <X, A> either)
 {
     return(either.Cata(
                x => Maybe.Nothing <A>(),
                Maybe.Just));
 }
コード例 #8
0
ファイル: Morphisms.cs プロジェクト: jedahu/Jib
 public static Validation <X, A> Validation <X, A>(this Either <X, A> either)
 {
     return(either.Cata(
                Jib.Validation.Failure <X, A>,
                Jib.Validation.Success <X, A>));
 }
コード例 #9
0
ファイル: Bind.cs プロジェクト: jedahu/Jib
 public static Either <Y, A> BindLeft <X, Y, A>(this Either <X, A> either, Func <X, Either <Y, A> > f)
 {
     return(either.Cata(f, Either.Right <Y, A>));
 }
コード例 #10
0
ファイル: Bind.cs プロジェクト: jedahu/Jib
 public static Either <X, B> Bind <X, A, B>(this Either <X, A> either, Func <A, Either <X, B> > f)
 {
     return(either.Cata(Either.Left <X, B>, f));
 }
コード例 #11
0
 public static void CataVoid <X, A>(this Either <X, A> either, Action <X> left, Action <A> right)
 {
     either.Cata(Unit.Func(left), Unit.Func(right));
 }
コード例 #12
0
ファイル: Functor.cs プロジェクト: jedahu/Jib
 public Either <X, B> Map <X, A, B>(Either <X, A> either, Func <A, B> f)
 {
     return(either.Cata(Either.Left <X, B>, a => Either.Right <X, B>(f(a))));
 }
コード例 #13
0
ファイル: Traversable.cs プロジェクト: jedahu/Jib
 public static IEnumerable <Either <X, A> > SequenceEnumerable <X, A>(this Either <X, IEnumerable <A> > either)
 {
     return(either.Cata(
                x => Either.Left <X, A>(x).PureEnumerable(),
                a => a.Select(Either.Right <X, A>)));
 }
コード例 #14
0
ファイル: Traversable.cs プロジェクト: jedahu/Jib
 public static IEnumerable <Either <X, B> > TraverseEnumerable <A, B, X>(this Either <X, A> either, Func <A, IEnumerable <B> > f)
 {
     return(either.Cata(
                x => Either.Left <X, B>(x).PureEnumerable(),
                a => f(a).Select(Either.Right <X, B>)));
 }