static void Main(string[] args)
        {
            var orderReportFormattingSettings =
                new OrderReportFormattingSettings(args.Length > 0 && args[0].Equals("noNumberOfLines"));

            var cities = DatabaseModuleFunctions.LoadAllDataWithoutOrders();

            var PureCompose = PureLambda.Create(() =>
            {
                var generateReportForOrder =
                    ReportingModule.GenerateReportForOrder();

                var generateReportForCustomer =
                    ReportingModule.GenerateReportForCustomer()
                    .HonestlyInject(
                        generateReportForOrder);

                var generateReportForCity =
                    ReportingModule.GenerateReportForCity()
                    .HonestlyInject(generateReportForCustomer);

                return(ReportingModule.GenerateReport()
                       .HonestlyInject(generateReportForCity));
            });

            var generateReportHonest = PureCompose();

            var generateReport =
                generateReportHonest
                .PartiallyInvoke(
                    orderReportFormattingSettings,
                    DatabaseModule.LoadOrdersForCustomer());

            var report = generateReport(cities);

            SaveReport(report);
        }
 public System.Collections.Immutable.ImmutableArray <Order> Invoke(Customer input)
 {
     return(DatabaseModuleFunctions.LoadOrdersForCustomer(input));
 }
 public System.Collections.Immutable.ImmutableArray <City> Invoke(Unit input)
 {
     return(DatabaseModuleFunctions.LoadAllDataWithoutOrders());
 }