For what it's worth, many (most/all?) programmers I know in person
don't have the slightest clue about Category Theory and they may have
known about abstract algebra once upon a time but certainly don't
remember any of it now. They usually understand the concepts perfectly
well enough but by "lay terms" or by no particular name at all.
Personally, I don't mind it too much if the generic typeclasses are
named using extremely accurate terms like Monoid, but saying that
someone should then look up the abstract math concept and try to map
this to something very concrete and simple such as a string seems like
wasted effort.
Usually when encountering something like "Monoid" (if I didn't already
know it), I'd look it up in the library docs. The problem I've had
with this tactic is twofold:
First, the docs for the typeclass usually don't give any practical
examples, so sometimes it's hard to be sure that the "append" in
"mappend" means what you think it means.
Second is that there appears to be no way to document an _instance_.
It would be really handy if there were even a single line under
"Instances > Monoid ([] a)" that explained how the type class was
implemented for the list type. As it is, if you know what a Monoid is
already, it's easy to figure out how it would be implemented. If you
don't, you're either stuck reading a bunch of pages on the generic
math term monoid and then finally realizing that it means
"appendable" (and other similar things), or grovelling through the
library source code seeing how the instance is implemented.
My 2 cents,
-Ross
On Jan 15, 2009, at 11:36 AM, Lennart Augustsson wrote:
Most people don't understand pure functional programming either. Does
that mean we should introduce unrestricted side effects in Haskell?
-- Lennart
On Thu, Jan 15, 2009 at 4:22 PM, Thomas DuBuisson
<thomas.dubuis...@gmail.com> wrote:
On Thu, Jan 15, 2009 at 4:12 PM, Sittampalam, Ganesh
<ganesh.sittampa...@credit-suisse.com> wrote:
Lennart Augustsson wrote:
I have replied on his blog, but I'll repeat the gist of it here.
Why is there a fear of using existing terminology that is exact?
Why do people want to invent new words when there are already
existing ones with the exact meaning that you want? If I see
Monoid I
know what it is, if I didn't know I could just look on Wikipedia.
If I see Appendable I can guess what it might be, but exactly what
does it mean?
I would suggest that having to look things up slows people down
and might distract them from learning other, perhaps more useful,
things about the language.
Exactly. For example, the entry for monoid on Wikipedia starts:
"In abstract algebra, a branch of mathematics, a monoid is an
algebraic structure with a single, associative binary operation and
an
identity element."
I've had some set theory, but most programmers I know have not.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe