Mark Karpov
Mark Karpov

Reputation: 7599

Is there identity conduit?

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?

Upvotes: 7

Views: 313

Answers (1)

xnyhps
xnyhps

Reputation: 3316

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.

Upvotes: 7

Related Questions