​​«Невозможный» параллельный алгоритм неотрицательной суммы



Рецепт параллельных вычислений Fork/Join или Map/Reduce:

- разбить задачу на куски;

- посчитать куски по-отдельности;

- склеить вместе.



Неотрицательная сумма (a, b) -> max(0, a + b) неассоциативна и результат зависит от порядка склейки. Она сломает Fork/Join и результат будет некорректен. Магией моноида починить на Java, SQL и Haskell за 5 минут, но



Читать статью