Сравнение пакета перечислителя с итератором - PullRequest
20 голосов
/ 06 октября 2011

В настоящее время есть два популярных варианта, которые реализуют шаблон iteratee :

Каковы их относительные преимущества? Является ли одно лучше другого или зависит от варианта использования (и если да, то каковы критерии для определения того, какой из них использовать)?

1 Ответ

21 голосов
/ 06 октября 2011

Существует не менее трех библиотек iteratee:

  • Перечислитель
  • iteratee
  • iterIO

Я считаю, что библиотека перечислителя является предпочтительной в настоящее время из-за ее простоты. Это также тот, который я использую для своих проектов, если вам интересно. Два других пакета являются более гибкими и могут быть быстрее в разы, но они также являются более сложными. Если вы хотите изучать итерированных, я предлагаю начать с enumerator . Это самая прямая реализация оригинальной идеи Олега.

Если у вас есть конкретный вариант использования и вам нужно много функций со стандартным подходом iteratee, вы можете рассмотреть возможность использования пакета iteratee . В более сложных сценариях вы также можете попробовать пакет iterIO , который имеет немного другую и более гибкую концепцию. В частности, итераторы могут общаться с перечислителем, что невозможно в двух других пакетах.

Если все три пакета недостаточно гибки, вы, вероятно, захотите написать свои сопрограммы самостоятельно с помощью пакета monad-coroutine . Итерации и перечислители - это специальный тип сопрограмм, который может быть составлен определенным образом. Пакет monad-coroutine дает вам общий тип и позволяет использовать собственную концепцию взаимодействия.

...