Зачем нам нужен scalaz.stream над итерацией?

Недавно я играл с scalaz.iteratee и играл iteratee. Я думаю, что iteratee - отличная идея обеспечить модульность вместо старого императивного цикла while - цель состоит в том, чтобы использовать функцию как обработчик каждой новой строки, а не получать строку [] из файла.

Однако, когда я смотрю обзор функций scalaz.stream, он упоминает, что дизайн этого заключается в замене старой реализации iteratee, но в нем не упоминается, почему они хотят его заменить.

Может кто-нибудь объяснить мне, можем ли мы Stream, какие функции и преимущества мы можем получить, а также что является недостатком использования iteratee?

Ответ 1

Iteratee гораздо труднее работать с сравнением с потоком scalaz. Scalaз-поток также превосходит итерации с точки зрения повторного использования кода и композиции.

Фактически все "серверы" теперь могут быть реализованы в scalaz-потоке, а не только в небольших программах или фрагментах кода, например, с использованием шаблона Iteratee.

Scalaz-stream обеспечивает превосходную защиту ресурсов, разрастание причин прекращения, настраиваемый контроль concurrency, тонны комбинаторов и легко расширяется.

Теперь у нас есть проект, который является потоком кода 200K + scalaz, и представляет собой сложный многопользовательский многопользовательский кластеризованный сервер (ы), все реализованы в потоке scalaz.

Если вы поделитесь тем, что действительно хотите достичь, я могу быть более "точным" в преимуществах и дать вам несколько быстрых образцов кода, которые, надеюсь, будут содержать вышеприведенные утверждения: -)