LINUX.ORG.RU

История изменений

Исправление 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 ...