現在、iterateeパターンを実装する2つの一般的な選択肢があります。
それらの相対的な利点は何ですか?一方が他方よりも優れているか、それともユースケースに依存しますか(もしそうなら、どちらを使用するかを決定する基準は何ですか)?
現在、iterateeパターンを実装する2つの一般的な選択肢があります。
それらの相対的な利点は何ですか?一方が他方よりも優れているか、それともユースケースに依存しますか(もしそうなら、どちらを使用するかを決定する基準は何ですか)?
少なくとも3つのiterateeライブラリがあります。
列挙型ライブラリは、その単純さから、現在好まれていると思います。気になるなら、それは私のプロジェクトに使用するものでもあります。他の2つのパッケージはより柔軟性があり、時にはより高速になる可能性がありますが、より複雑でもあります。iterateesを学びたい場合は、列挙子から始めることをお勧めします。これは、オレグの元のアイデアの最も直接的な実装です。
特定のユースケースがあり、標準のiterateeアプローチで多くの機能が必要な場合は、iterateeパッケージの使用を検討することをお勧めします。より複雑なシナリオでは、iterIOパッケージを試してみることもできます。これは、わずかに異なり、より柔軟な概念を持っています。特に、反復者は列挙子と通信できますが、他の2つのパッケージでは通信できません。
3つのパッケージすべてに十分な柔軟性がない場合は、 monad-coroutineパッケージを使用してコルーチンを自分で作成することをお勧めします。反復子と列挙子は特殊なタイプのコルーチンであり、特定の方法で構成できます。モナドコルーチンパッケージは、一般的なタイプを提供し、独自の相互作用の概念を採用できるようにします。