Есть как минимум три итерируемых библиотеки:
- нумератор
- итерация
- iterIO
Я считаю, что библиотека enumerator в настоящее время предпочтительнее из-за ее простоты. Это также тот, который я использую для своих проектов, если вам не все равно. Два других пакета более гибкие и могут быть в разы быстрее, но они и сложнее. Если вы хотите изучить итерации, я предлагаю начать с перечислителя. Это самое прямое воплощение оригинальной идеи Олега.
Если у вас есть конкретный вариант использования и вам нужно много функций со стандартным подходом iteratee, вы можете рассмотреть возможность использования пакета iteratee. В более сложных сценариях вы также можете попробовать пакет iterIO, который имеет немного другую и более гибкую концепцию. В частности, итерации могут взаимодействовать с перечислителем, что невозможно в двух других пакетах.
Если все три пакета недостаточно гибкие, вы, вероятно, захотите написать свои сопрограммы самостоятельно с помощью пакета monad-coroutine. Итерации и перечислители — это особый тип сопрограмм, которые могут быть составлены определенным образом. Пакет monad-coroutine дает вам общий тип и позволяет использовать вашу собственную концепцию взаимодействия.
person
ertes
schedule
06.10.2011