Какие компиляторы сегодня способны преобразовывать (map f (map g h)) в (map (f . G) h)?

Для этого используются многие методы, от простых, таких как Short Cut Fusion, до разработки Stream Fusion. Я знаю, что компиляторы, такие как GHC и MLTon, в значительной степени полагаются на эту технику. Существуют ли другие компиляторы, которые делают это?

1 ответ

Я думаю, что Clojure выполняет слияние (на функциях последовательностей, а не потоков, потому что Рич Хики больше заботится об оптимизации и распараллеливании строгих вычислений на определенных данных, а не потоковой обработке неопределенных / ленивых данных)

https://groups.google.com/forum/m/

http://clojure.org/reducers

Другие вопросы по тегам