public void Map3Example()
        {
            var userId = 1;

            OptionK.Applicative().Map3(
                UserRepository.GetUserDetails(userId),
                OrderRepository.GetOrders(),
                ShipmentRepository.GetShipments(),
                ReportManager.MakeReport)
            .Fix()
            .IsSome
            .ShouldBe(true);


            // The same with monadic bind
            var report =
                from user in UserRepository.GetUserDetails(userId)
                from orders in OrderRepository.GetOrders()
                from shipments in ShipmentRepository.GetShipments()
                select ReportManager.MakeReport(user, orders, shipments);

            report.IsSome.ShouldBe(true);
        }
Example #2
0
 public bool EqK <T>(IKind <OptionF, T> x, IKind <OptionF, T> y, IEq <T> eq) =>
 OptionK.Eq(eq).Eqv(x.Fix(), y.Fix());
Example #3
0
 public static IEnumerable <object[]> ApplyLaws() =>
 new ApplyLawsTests <OptionF, string, int, long>(OptionK.Apply(), OptionK.EqK()).Wrap();
Example #4
0
 public static IEnumerable <object[]> FunctorLaws() =>
 new FunctorLawsTests <OptionF, string, int, long>(OptionK.Functor(), OptionK.EqK()).Wrap();
Example #5
0
 public static IEnumerable <object[]> InvariantLaws() =>
 new InvariantLawsTests <OptionF, string, int, long>(OptionK.Invariant(), OptionK.EqK()).Wrap();
Example #6
0
 public static IEnumerable <object[]> MonadLaws() =>
 new MonadLawsTests <OptionF, string, int, long>(OptionK.Monad(), OptionK.EqK()).Wrap();
Example #7
0
 public static IEnumerable <object[]> EqLaws() =>
 new EqLawsTests <Option <string> >(OptionK.Eq(StringK.Eq())).Wrap();