Andrzej Jaworski himself at poczta.nom.pl
Fri Jan 16 23:15:25 EST 2009

Hi,
After recent rant "to Hell with Monoids and Mathematics" I felt like Galileo awaiting execution. I
splashed toilet several times but the rant was still there, so I decided to find a scapegoat for this
malfunctioning. Of cours your mathematic teachers are to blame. They are the product of negative
selection, guys useless for research, mathematics was hard for them so like ancient Egyptian priests
used it as an edge over unenlightened crowd, right? I leave this to your conscience;-)

Whatever the reason is, they have obviously failed to convince you that

MATHEMATICS = MATHEMATICAL_KNOWLEDGE + FORMAL_METHODS_of_THINKING

You need only the second part for Haskell.
- Then why Monoids and the rest? Isn't that knowledge?
- It is knowledge without flesh as it is not tighten to any specific domain. Hence its simplicity and
universality. Category Theory generalizes our mathematical experience along the line that we know
more that we can prove.

- Why generalizations derived along mathematical experience are superior to yours the hacker?
- Because the time span between your one mistake or success and another mistake or success is too
long for your brain to infer any structural relationship. Mathematicians using general concepts and
powerful notation go way beyond human experience.

- Why stick with mathematical names?
- To have ample reference on them and to make people in different domains speak the same language.

Still not convinced that abstraction is your friend? Let me give you a hint, the only prerequisite is
to have 10 fingers:-)
(0) Try to do some arithmetic without the concept of infinite set. Don't tell me that you can program
calculator to do this. You would need
axioms of arithmetic which you would never discover without your brain imagining infinite
concatenation.
(1) The same way you need Cartesian product for tuples as their ultimate holder.
(2) The same way you need relational algebra to collect all manipulations of tables (and much more to
map them in XML).
(3) The same way you need Monoid to contain all Appendable and more.

One of you asked if mathematical precision is good enough for programming. My friend, you used words
that outside your body experience mean nothing. Take Topology which cannot tell the difference
between the fork in your beefburger from that in your compost. You would not use it to calculate
N-body problem, would you? But exactly such imprecise (qualitative) methods underpin recent dramatic
improvements of precision in Mechanics. Totally imprecise improves precision! Without the high of
mathematics our cognition is very misleading.

Another of you shrugged over unimportant for him book on abstract algebra. Fine, but the book
contains piece of flesh that brought to light methods for your Haskell. If you enjoy Haskell and want
stronger feel of the methods this flesh will be your Holy Sacrament. Amen.

Students at engineering have functional analysis in their curriculum which takes over 10 times longer
to learn than your prerequisites for Haskell. But one of you made an excuse that engineers actually
don't know this stuff. If that is so I will leave you with this thought experiment: suppose then that
Dr.Wolfram goes crazy (e.g. falling sales) and decides to terminate this civilization by introducing
a virus to his Mathematica upgrade...

Be happy!