View source on Github

BufferedSource doesn't feel quite right. One complaint was the name bsourceUnpull , but overall people thought it didn't fit in well with the rest of the package. Usage of mutable variables for storing state is suboptimal. The split between Source and PreparedSource isn't very nice.

The main motivation to avoid the change to CPS was to keep the simplicity of the current approach. However, I was about to lose that simplicity anyway.

Like most Haskellers, I do have an innate dislike for mutable variables.

After more work comparing conduits to enumerators, I've come to believe that the main source of confusion in enumerators is that the data producer ( Enumerator ) is just a consumer-transformer. Since the essence of Source would stay the same in CPS, I think that this change does not hinder our simplicity.

) is just a consumer-transformer. Since the essence of would stay the same in CPS, I think that this change does not hinder our simplicity. There was strong reason to believe that GHC would be able to optimize CPS code better than mutable variable code.

When will this be released? Likely some time this week. I don't have any specific changes in mind right now, outside of name adjustments that are suggested by the community.

How this affects users