7
votes

The title says it all. I've seen that some people apparently use Data.Conduit.List.map id as identity conduit, but is this the recommended way to stream data unchanged?

1
Judging from Data.Conduit.List.map implementation, i'd say yes. - arrowd

1 Answers

6
votes

The simplest way to write an identity conduit is probably:

awaitForever yield

because this doesn't require an extra import.

The definition of Data.Conduit.List.map is very similar:

mapC f = awaitForever $ yield . f

(The difference between mapC and map has something to do with CPP macros to define fusion.)

When optimization is on (-O1), it appears both options result in identical code, so it's just a matter of taste.