<div dir="ltr"><div class="gmail_msg" style="color:rgb(33,33,33)">> there is a fair bit of user code for things like vector types that do things like</div><div class="gmail_msg" style="color:rgb(33,33,33)"><br class="gmail_msg"></div><div class="gmail_msg" style="color:rgb(33,33,33)"><font face="monospace">newtype V3 a = V3 (a,a,a,a)</font></div><div class="gmail_msg" style="color:rgb(33,33,33)"><font face="monospace">         ^         1 2 3 4(!?)</font></div><div class="gmail_msg" style="color:rgb(33,33,33)"><br></div><div class="gmail_msg" style="color:rgb(33,33,33)">Oh boy, I sure hope not ;)</div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Mar 22, 2017 at 8:14 AM Sven Panne <<a href="mailto:svenpanne@gmail.com">svenpanne@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg">2017-03-21 22:29 GMT+01:00 Edward Kmett <span dir="ltr" class="gmail_msg"><<a href="mailto:ekmett@gmail.com" class="gmail_msg" target="_blank">ekmett@gmail.com</a>></span>:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_msg">[... In general I think the current behavior is the least surprising as it "walks all the a's it can" and is the only definition compatible with further extension with Traversable. [...]</div></div></blockquote><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">OTOH, the current behavior contradicts my intuition that wrapping a type into data/newtype plus using the deriving machinery is basically a no-op (modulo bottoms etc.). When I e.g. wrap a type t, I would be very surprised if the Eq/Ord instances of the wrapped type would behave differently than the one on t. I know that this is very handwavy argument, but I think the current behavior is *very* surprising.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Somehow the current behavior seems to be incompatible with the FTP, where pairs are given a special treatment (if that't the right/intuitive choice is a completely different topic, though).</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Given the fact that "deriving Foldable" is quite old and therefore hard to change, I would at least suggest a big, fat warning in the documentation, including various examples where intuition and implementation do not necessarily meet.</div></div></div></div>
_______________________________________________<br class="gmail_msg">
Glasgow-haskell-users mailing list<br class="gmail_msg">
<a href="mailto:Glasgow-haskell-users@haskell.org" class="gmail_msg" target="_blank">Glasgow-haskell-users@haskell.org</a><br class="gmail_msg">
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users" rel="noreferrer" class="gmail_msg" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users</a><br class="gmail_msg">
</blockquote></div>