2016-02-22 11 views
5

Il titolo dice tutto. Ho visto che alcune persone usano apparentemente Data.Conduit.List.map id come conduit di identità, ma è questo il modo consigliato per lo streaming dei dati invariato?Esiste un canale di identità?

+1

A giudicare dall'implementazione di 'Data.Conduit.List.map', direi di si. – arrowd

risposta

5

Il modo più semplice di scrivere un condotto d'identità è probabilmente:

awaitForever yield 

perché questo non richiede un'importazione supplementare.

La definizione di Data.Conduit.List.map è molto simile:

mapC f = awaitForever $ yield . f 

(. La differenza tra mapC e map ha qualcosa a che fare con le macro CPP per definire la fusione)

Quando l'ottimizzazione è acceso (-O1), sembra che entrambe le opzioni producano un codice identico, quindi è solo una questione di gusti.

+3

Sarebbe bello se "idC = awaitForever yield" fosse stato aggiunto alla libreria. Forse creerò un PR per questo. – Mark

+0

@ Marchi qualche notizia riguardante il PR? – SwiftsNamesake

+0

@SwiftsNamesake, consultare https://github.com/snoyberg/conduit/issues/255 – Mark