ci sono almeno tre biblioteche iteratee:
- enumeratore
- iteratee
- iterIO
Credo che la enumeratore biblioteca è quella preferita attualmente, a causa della sua semplicità. È anche quello che uso per i miei progetti, se ti interessa. Gli altri due pacchetti sono più flessibili e possono essere più veloci a volte, ma sono anche più complicati. Se vuoi imparare le iterate suggerisco di iniziare con l'enumeratore . È l'implementazione più diretta dell'idea originale di Oleg.
Se si dispone di un particolare caso d'uso e sono necessarie molte funzionalità con l'approccio standard iteratee, è possibile prendere in considerazione l'utilizzo del pacchetto iteratee. In scenari più complicati potresti anche provare il pacchetto iterIO, che ha un concetto leggermente diverso e più flessibile. In particolare gli iterate possono comunicare con l'enumeratore, cosa che non è possibile negli altri due pacchetti.
Se tutti e tre i pacchetti non sono abbastanza flessibili, probabilmente si desidera scrivere personalmente le proprie coroutine con il pacchetto monad-coroutine. Gli iterate e gli enumeratori sono un tipo speciale di coroutine, che possono essere composti in un certo modo. Il pacchetto monad-coroutine fornisce il tipo generale e consente di utilizzare il proprio concetto di interazione.
Un lieve errore: le iterazioni di 'iteratee' possono comunicare anche con l'enumeratore. Ad esempio, questo è il modo in cui 'seek' è implementato. Tuttavia non è sofisticato come il meccanismo 'iterIO'. –
@ertes, e altre proprietà, come ad es. efficienza/prestazioni? Le librerie che non usano la stessa libreria iteratee possono essere combinate? – hvr
Generalmente no, le librerie non sono compatibili tra loro. – ertes