<span>The relation between Foldable and Traversable is similar to the one between Applicative and Monad: Traversable does not require Foldable, but every Traversable has a Foldable instance (given by foldMalDefault). That's why there is the superclass constraint.</span><div><br><div class="gmail_quote"><div dir="ltr">Jonathon Delgado <<a href="mailto:voldermort@hotmail.com">voldermort@hotmail.com</a>> schrieb am Do., 4. Mai 2017, 09:49:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It seems that Traversable is doing two things:<br>
<br>
1) Changing the shape of a data structure.<br>
2) Folding over the contents of a data structure.<br>
<br>
Traversable requires Foldable to enable 2, but Traversable is also applied to types such as (,) where only 1 is relevant.<br>
<br>
If this is correct, follow-up questions would be:<br>
<br>
1) For educational purposes, could these concerns be split without substantial drawback?<br>
2) For practical purposes, could this be done without breaking a lot of existing code?<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div></div>