
On Sat, Aug 25, 2012 at 9:15 AM,
On Sat, 25 Aug 2012, Ross Paterson wrote:
On Fri, Aug 24, 2012 at 02:53:30AM +0100, roconnor@theorem.ca wrote:
On Fri, 24 Aug 2012, Ross Paterson wrote:
On Fri, Aug 24, 2012 at 12:08:04AM +0100, roconnor@theorem.ca wrote:
With such wide spread agreement going back at least 6 years, I think it is time to add the following 2 laws to the documentation for Data.Traversable.Traversable.
(1) traverse Identity == Identity (2) traverse (Compose . fmap g . f) == Compose . fmap (traverse g) . traverse f
Sounds good (except that Identity and Compose aren't defined in base).
Er right. I'm not entirely sure how to address this issue.
There doesn't seem to be any alternative to re-iterating the newtype definitions and the Functor and Applicative instances in the doc comment.
The only alternative I can think of would be to move the Idenity and Compose functors from transformers into base. The consequences of this would be massive. I don't really suggest doing this at this time.
Would it really be so massive? Transformers could still re-export Identity / Compose. This'd definitely be a good change, either way!