2011-10-06 139 views

回答

20

有至少三個iteratee庫:

  • 枚舉
  • iteratee
  • iterIO

我相信枚舉庫是最好的一個當前,由於其簡單。如果你在意的話,它也是我用於我的項目的人。另外兩個軟件包更靈活,有時可能更快,但它們也更復雜。如果你想學習迭代,我建議從調查員開始。這是Oleg最初想法的最直接的實現。

如果您有一個特定用例並需要使用標準iteratee方法的很多功能,您可能需要考慮使用迭代器包。在更復雜的情況下,您可能還想嘗試使用包,它具有略微不同且更靈活的概念。特別是iteratees可以和枚舉器進行通信,這在其他兩個軟件包中是不可能的。

如果所有三個軟件包都不夠靈活,那麼您可能需要使用monad-coroutine軟件包自己編寫協程。迭代器和枚舉器是一種特殊類型的協程,可以用某種方式組成。 monad-coroutine包爲您提供了一般類型,並允許您使用自己的交互概念。

+3

一個小問題:'iteratee' iteratees也可以與枚舉器通信。例如,這就是'seek'的實現方式。它不像'iterIO'機制那麼複雜。 –

+0

@ertes,其他屬性如何,例如efficency /性能?不能使用相同的迭代庫的庫可以結合使用嗎? – hvr

+0

通常不,庫彼此不兼容。 – ertes