I have to say, I agree with Lennart here. Terms like monoid have had a precise definition for a very long time. Replacing an ill-defined term by a vaguely defined term only serves to avoid facing ones ignorance - IMHO an unwise move for a technical expert. Learning Haskell has often been described as a perspective changing, deeply enlightening process. I believe this is because the language and the community favours drilling down to the core of a problem and exposing its essence in the bright light of mathematical precision. It would be a mistake to give up on that.

We could call lambda abstraction, "name binder", and we could call the lambda calculus, "rule system to manipulate name bindings". That would avoid some scary greek. Would it make functional programming any easier? In contrast, even the planned new C++0x standard uses our terminology:

  http://en.wikipedia.org/wiki/C%2B%2B0x#Lambda_functions_and_expressions

Ok, ok, they do mutilate the whole idea quite brutally, but the point is, we got in their heads. That counts.

I am all for helping beginners to learn, but I am strongly against diluting what is being learnt. If some of our terminology is a problem, we need to explain it better.

Manuel


Lennart Augustsson:
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

Reply via email to