
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_IS_ABOUT_SIMPLIFYING_THINGS. 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!