Подтвердить что ты не робот

Что означает "эта функция будет сливаться"?

В документации для scanl говорится, что "эта функция будет сливаться". Что здесь означает предохранитель? Это плохо?

4b9b3361

Ответ 1

http://www.haskell.org/haskellwiki/Short_cut_fusion

(и, для получения дополнительной информации: http://www.haskell.org/haskellwiki/Correctness_of_short_cut_fusion)

Если функция сработает, это хорошо. Это означает, что цепочка функций может быть объединена в одну функцию, что означает меньшее распределение, меньше стека и больше скорости! Отлично!

Здесь тривиальное слияние: map f . map g ---- > map (f . g).

Как указано выше, есть много других, которые также применяются в правилах стандартной библиотеки.

Ответ 2

Это похоже на сопрограммы - если вы создаете две функции, которые они могут выполнять на конденсированном потоке, а не один, который сначала "оценивается", а затем второй.

Что такое потоковое Fusion Haskell

Ответ 3

Я бы предположил, что это относится к методам оптимизации слияния потоков и заявляет, что они могут применяться к функции. По сути, если у вас есть две функции, которые преобразуют последовательности, оптимизатор будет объединять преобразования вместе, поэтому требуется только один обход.

Короче, нет, это не плохо. Совершенно противоположное!