В своем выступлении Будущее Clojure Бодил делает следующее заявление:
Гай Стил выступил на ICFP с докладом под названием Организация функционального кода для параллельного выполнения (или foldl и foldr считаются слегка вредными) (Также в ACM).
В нем Гай Стил утверждает на слайде 70:
Как только вы говорите «сначала,
SUM = 0
», вас обливают шлангом. Аккумуляторы ПЛОХО для параллелизма. Обратите внимание, чтоfoldl
иfoldr
хотя и функциональны, но в основе своей являются накопительными.
Что довольно интересно. Итак, Бодил говорит, что Гай Стил сообщает о проблеме. Затем она заявила, что Рич обратился к ней с помощью Reducers (и преобразователи, которые являются продолжением этой мысли) . В разговоре Преобразователей в 16:11 мы видим, как Рич вызывает некоторые конкретные статьи о foldr
.
- Птица - Лекции по конструктивному функциональному программированию (1988 г.)
- Хаттон - учебник по универсальности и выразительности сгибов (1999)
Рич фактически говорит, что fold
являются составными, и вы можете использовать их для создания других функций более высокого порядка, таких как map
и filter
.
Мой вопрос в том, был ли Бодил прав? Рич решил проблему, поставленную Гаем Стилом? Решают ли редукторы (в Clojure) проблему накопления папок с масштабированием, описанную Гаем Стилом?
clojure
, если считаете, что у вопроса более широкая аудитория. - person leppie   schedule 08.12.2014