Некоторое время я думал, что вам просто нужна карта для моноида, а затем сокращение будет выполнять сокращение в соответствии с умножением моноида.
Во-первых, это не совсем так, как работают моноиды, а во-вторых, это не совсем то, как map/reduce работает на практике.
А именно, возьмем вездесущий пример «счета». Если считать нечего, любой движок map/reduce вернет пустой набор данных, а не нейтральный элемент. облом.
Кроме того, в моноиде операция определена для двух элементов. Мы можем легко распространить его на конечные последовательности или, благодаря ассоциативности, на конечные упорядоченные множества. Но нет никакого способа распространить его на произвольные «коллекции», если только у нас нет -алгебры. .
Итак, какова теория? Я пытался понять это, но не смог; и я попытался пойти Google, но ничего не нашел.