That&#39;s a great start, but &quot;coproduct&quot; is still pretty scary. Why not refer to it as OneOrTheOtherButNotBothDataConstructor?<br><br>-Nathan Bloomfield<br><br><div class="gmail_quote">On Sun, Jan 18, 2009 at 11:32 AM, Sterling Clover <span dir="ltr">&lt;<a href="mailto:s.clover@gmail.com">s.clover@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This is a great effort, but the root of the problem isn&#39;t just poor documentation, but an insistence on some obscure name. How about renaming Bool to YesOrNoDataVariable? I think this would help novice programmers a great deal.<br>

<br>
It would also make the documentation flow much more naturally:<div class="Ih2E3d"><br>
<br>
The Bool type is the coproduct of the terminal object with itself.<br>
<br></div>
--huh?<br>
<br>
The YesOrNoDataVariable is the coproduct of the terminal object with itself.<br>
<br>
--Oh! Of course!<br>
<br>
--S<div><div></div><div class="Wj3C7c"><br>
<br>
On Jan 18, 2009, at 12:17 PM, Benja Fallenstein wrote:<br>
<br>
</div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="Wj3C7c">
On Sun, Jan 18, 2009 at 5:48 PM, &nbsp;&lt;<a href="mailto:roconnor@theorem.ca" target="_blank">roconnor@theorem.ca</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I noticed the Bool datatype isn&#39;t well documented. &nbsp;Since Bool is not a<br>
common English word, I figured it could use some haddock to help clarify it<br>
for newcomers.<br>
<br>
-- |The Bool datatype is named after George Boole (1815-1864).<br>
-- The Bool type is the coproduct of the terminal object with itself.<br>
</blockquote>
<br>
Russell, this does seem like it might be very helpful, but it might be<br>
useful to include a note about what category you are working in.<br>
People may sometimes naively assume that one is working in the<br>
category of Haskell/Hugs/GHC data types and Haskell functions, in<br>
which there are no terminal -- or initial -- objects (&#39;undefined&#39; and<br>
&#39;const undefined&#39; are distinct maps between any two objects X and Y),<br>
or else in the similar category without lifted bottoms, in which the<br>
empty type is terminal and the unit type isn&#39;t (&#39;undefined&#39; and &#39;const<br>
()&#39; are both maps from any object X to the unit type). These niceties<br>
will not confuse the advanced reader, but it may help the beginner if<br>
you are more explicit.<br>
<br>
- Benja<br>
<br>
<br>
P.S. :-)<br>
_______________________________________________<br></div></div>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">Libraries@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/libraries" target="_blank">http://www.haskell.org/mailman/listinfo/libraries</a><br>
</blockquote><div><div></div><div class="Wj3C7c">
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</div></div></blockquote></div><br>