Exemple #1
0
 public Maybe <Pair <A, B> > Zip <A, B>(Maybe <A> maybe, Maybe <B> other)
 {
     return(maybe.Cata(
                Maybe.Nothing <Pair <A, B> >,
                a => other.Cata(
                    Maybe.Nothing <Pair <A, B> >,
                    b => Maybe.Just(Pair.Create(a, b)))));
 }
Exemple #2
0
 public static IEnumerable <A> Enumerable <A>(this Maybe <A> maybe)
 {
     return(maybe.Cata(System.Linq.Enumerable.Empty <A>, a => a.PureEnumerable()));
 }
Exemple #3
0
 public static Validation <X, A> Validation <X, A>(this Maybe <A> maybe, Func <X> fail)
 {
     return(maybe.Cata(() => Jib.Validation.Failure <X, A>(fail()), Jib.Validation.Success <X, A>));
 }
Exemple #4
0
 public static bool JustTest <A>(this Maybe <A> maybe, Func <A, bool> predicate)
 {
     return(maybe.Cata(() => false, predicate));
 }
Exemple #5
0
 public bool Eq(Maybe <A> t1, Maybe <A> t2)
 {
     return(t1.Cata(() => t2.Cata(() => true, a2 => false), a1 => t2.Cata(() => false, a2 => teq.Eq(a1, a2))));
 }
Exemple #6
0
 public static Either <X, A> Either <X, A>(this Maybe <A> maybe, Func <X> left)
 {
     return(maybe.Cata(() => Jib.Either.Left <X, A>((left())), Jib.Either.Right <X, A>));
 }
Exemple #7
0
 public static Maybe <A> Where <A>(this Maybe <A> maybe, Func <A, bool> predicate)
 {
     return(maybe.Cata(Maybe.Nothing <A>, a => predicate(a) ? maybe : Maybe.Nothing <A>()));
 }
Exemple #8
0
 public static Maybe <B> Bind <A, B>(this Maybe <A> maybe, Func <A, Maybe <B> > f)
 {
     return(maybe.Cata(Maybe.Nothing <B>, f));
 }
Exemple #9
0
 public static void CataVoid <A>(this Maybe <A> maybe, Action nothing, Action <A> just)
 {
     maybe.Cata(Unit.Func(nothing), Unit.Func(just));
 }
Exemple #10
0
 public Maybe <B> Map <A, B>(Maybe <A> maybe, Func <A, B> f)
 {
     return(maybe.Cata(Maybe.Nothing <B>, a => Maybe.Just(f(a))));
 }
Exemple #11
0
 public static IEnumerable <Maybe <B> > TraverseEnumerable <A, B>(this Maybe <A> maybe, Func <A, IEnumerable <B> > f)
 {
     return(maybe.Cata(() => Maybe.Nothing <B>().PureEnumerable(), a => f(a).Select(Maybe.Just)));
 }
Exemple #12
0
 public static Future <Maybe <A> > SequenceFuture <A>(this Maybe <Future <A> > maybe)
 {
     return(maybe.Cata(() => Maybe.Nothing <A>().PureFuture(), a => a.Map(Maybe.Just)));
 }
Exemple #13
0
 public static IEnumerable <Maybe <A> > SequenceEnumerable <A>(this Maybe <IEnumerable <A> > maybe)
 {
     return(maybe.Cata(() => Maybe.Nothing <A>().PureEnumerable(), a => a.Select(Maybe.Just)));
 }