История изменений
Исправление
dave,
(текущая версия)
:
или это реально очень частый юзкейс?
В других языках вряд ли, но в haskell - очень частый. К тому же там различные оптимизации применяются типа list fusion. По сути список может быть и итератором в силу ленивости. Поэтому не так очевидно, есть ли оверхед и какой он, если есть.
Банальный пример. Скажем есть список элементов xs. С ними нужно что-то сделать в цикле, причем нужен еще индекс элементов. Все очень просто. Зиппим с бесконечным списком индексов и получаем нужное поведение:
forM_ (zip [0..] xs) $ \(i, x) -> do ...
Подозреваю, что в rust можно что-то подобное сделать с минимальным оверхедом
Исправление
dave,
:
или это реально очень частый юзкейс?
В других языках вряд ли, но в haskell - очень частый. К тому же там различные оптимизации применяются типа fusion list. По сути список может быть и итератором в силу ленивости. Поэтому не так очевидно, есть ли оверхед и какой он, если есть.
Банальный пример. Скажем есть список элементов xs. С ними нужно что-то сделать в цикле, причем нужен еще индекс элементов. Все очень просто. Зиппим с бесконечным списком индексов и получаем нужное поведение:
forM_ (zip [0..] xs) $ \(i, x) -> do ...
Подозреваю, что в rust можно что-то подобное сделать с минимальным оверхедом
Исходная версия
dave,
:
или это реально очень частый юзкейс?
В других языках вряд ли, но в haskell - очень частый. К тому же там различные оптимизации применяются типа fusion list. По сути список может быть и итератором в силу ленивости. Поэтому не так очевидно, есть ли оверхед и какой он, если есть.
Банальный пример. Скажем есть список элементов xs. С ними нужно что-то сделать в цикле, причем нужен еще индекс элементов. Все очень просто. Зиппим с бесконечным списком индексов и получаем нужное поведение:
forM_ (zip [0..] xs) $ \(i, x) -> do ...