<div dir="auto">The last time I went to look at the laws it took me a couple minutes to find them. I use them to write instances. Pretty important, IMO.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 16, 2021, 6:46 PM Viktor Dukhovni <<a href="mailto:ietf-dane@dukhovni.org">ietf-dane@dukhovni.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Sep 16, 2021 at 04:57:28PM -0400, David Feuer wrote:<br>
<br>
> I am not a fan of how the new Traversable documentation buries the<br>
> actual laws.<br>
<br>
The laws are one click away from the table of contents, and IMHO not<br>
particularly illuminating other than for advanced readers.<br>
<br>
For example, in Data.Foldable they are:<br>
<br>
    foldr f z t = appEndo (foldMap (Endo . f) t ) z<br>
    foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z<br>
    fold = foldMap id<br>
    length = getSum . foldMap (Sum . const 1)<br>
<br>
is someone new to Data.Foldable really going to learn something from<br>
these before they've deeply understood the background concepts?<br>
<br>
My take is that the laws should almost always be "buried" (one click<br>
away) at the end of the module documentation.  Those who care and need<br>
them can find them, but I think they just intimidate the less<br>
experienced readers.  Putting the laws first likely only discourages<br>
beginners.<br>
<br>
-- <br>
    Viktor.<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 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>