Ejemplo n.º 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)))));
 }
Ejemplo n.º 2
0
 public static IEnumerable <A> Enumerable <A>(this Maybe <A> maybe)
 {
     return(maybe.Cata(System.Linq.Enumerable.Empty <A>, a => a.PureEnumerable()));
 }
Ejemplo n.º 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>));
 }
Ejemplo n.º 4
0
 public static bool JustTest <A>(this Maybe <A> maybe, Func <A, bool> predicate)
 {
     return(maybe.Cata(() => false, predicate));
 }
Ejemplo n.º 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))));
 }
Ejemplo n.º 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>));
 }
Ejemplo n.º 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>()));
 }
Ejemplo n.º 8
0
Archivo: Bind.cs Proyecto: jedahu/Jib
 public static Maybe <B> Bind <A, B>(this Maybe <A> maybe, Func <A, Maybe <B> > f)
 {
     return(maybe.Cata(Maybe.Nothing <B>, f));
 }
Ejemplo n.º 9
0
 public static void CataVoid <A>(this Maybe <A> maybe, Action nothing, Action <A> just)
 {
     maybe.Cata(Unit.Func(nothing), Unit.Func(just));
 }
Ejemplo n.º 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))));
 }
Ejemplo n.º 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)));
 }
Ejemplo n.º 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)));
 }
Ejemplo n.º 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)));
 }