
On Wed, Apr 30, 2014 at 01:11:19AM -0400, Edward Kmett wrote:
As a straw man, if we really don't export the constructor and implement the writerT API abstractly you can actually can implement Show/Read/Ord/Eq correctly.
Under the assumption that it only uses the state as a writer context: we could safely pass it the mempty state for display purposes to capture the information present.
That's neat (the power of abstraction), but people might be surprised by the performance of things like let m = enormous computation in m == m There's a similar issue with the Applicative instance, and indeed any situation where the lazy instance would give a shared value while the state-based one wouldn't. There's a strong argument for transparent types in transformers, which many people already find complex.