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

Сравнение пакета перечислителя с итератором

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

  • Пакет перечислителя и
  • пакет iteratee.

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

4b9b3361

Ответ 1

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

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

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

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

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