20

現在、iterateeパターンを実装する2つの一般的な選択肢があります。

それらの相対的な利点は何ですか?一方が他方よりも優れているか、それともユースケースに依存しますか(もしそうなら、どちらを使用するかを決定する基準は何ですか)?

4

1 に答える 1

21

少なくとも3つのiterateeライブラリがあります。

  • 列挙子
  • iteratee
  • iterIO

列挙型ライブラリは、その単純さから、現在好まれていると思います。気になるなら、それは私のプロジェクトに使用するものでもあります。他の2つのパッケージはより柔軟性があり、時にはより高速になる可能性がありますが、より複雑でもあります。iterateesを学びたい場合は、列挙子から始めることをお勧めします。これは、オレグの元のアイデアの最も直接的な実装です。

特定のユースケースがあり、標準のiterateeアプローチで多くの機能が必要な場合は、iterateeパッケージの使用を検討することをお勧めします。より複雑なシナリオでは、iterIOパッケージを試してみることもできます。これは、わずかに異なり、より柔軟な概念を持っています。特に、反復者は列挙子と通信できますが、他の2つのパッケージでは通信できません。

3つのパッケージすべてに十分な柔軟性がない場合は、 monad-coroutineパッケージを使用してコルーチンを自分で作成することをお勧めします。反復子と列挙子は特殊なタイプのコルーチンであり、特定の方法で構成できます。モナドコルーチンパッケージは、一般的なタイプを提供し、独自の相互作用の概念を採用できるようにします。

于 2011-10-06T13:41:01.537 に答える