Performs a tree-like reduction of all elements of a product type. The given map function is applied before excution the reduction to each element of the input.
- Note
- For associative operations, this produces the same result as a left or right fold preceeded by map, but have different intermediate evaluation order.
- Parameters
-
| f | Mapping function to apply |
| m | Monoid callable function to apply |
| t | Product type to reduce |
- Returns
- The result of reducing t by recursively combining elements in a tree structure
Helper type
namespace kumi::result
{
template<mono
id M, product_type T>
struct map_reduce;
template<monoid M, product_type T>
}
constexpr auto map_reduce(Function f, M &&m, T &&t)
Performs a tree-like reduction of all elements of a product type. The given map function is applied b...
Definition reduce.hpp:153
Computes the return type of a call to kumi::map_reduce
Examples:
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
auto times_two = [&](auto e){ return 2*e; };
auto is_pair = [&](auto e){ return e%2==0; };
}
constexpr numeric_prod multiplies
Forms a binary monoid callable that can be used in kumi::algoritm. It represents the multiplication.
Definition monoid.hpp:131
constexpr numeric_add plus
Forms a binary monoid callable that can be used in kumi::algoritm. It represents the addition.
Definition monoid.hpp:124
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:29
#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
auto r1 =
kumi::record{
"a"_id = 2.,
"b"_id = 5,
"c"_id =
short{3},
"d"_id =
'\4'};
auto r2 =
kumi::record{
"a"_id = 2 ,
"b"_id = 1,
"c"_id =
short{55},
"d"_id =
' '};
auto times_two = [&](auto e){ return 2*e; };
auto is_pair = [&](auto e){ return e%2==0; };
}
Fixed-size collection of heterogeneous fields necessarily named, names are unique.
Definition record.hpp:29