[Haskell-cafe] Re: Comments from OCaml Hacker Brian Hurt
Apfelmus, Heinrich
apfelmus at quantentunnel.de
Fri Jan 16 06:51:07 EST 2009
Thorkil Naur wrote:
> Peter Verswyvelen wrote:
>>
>> It is rather funny. When we are young kids, we learn weird symbols like
>>
>> A B C a b c 1 2 3
>>
>> which we accept after a while.
>>
>> But Functor, Monoid or Monad, that we cannot accept anymore. Why, because
>> these are not intuitive? Are the symbols above "intuitive"?
>
> I think there is a simple explanation of this: Consider the amount of time you
> spent, as a young kid, to learn to get used to these funny 1, 2, a, b, x, y,
> +, - and so on. I haven't got the exact schedules from school, but my
> impression is that we are talking about hours and hours of drill and
> practice, over weeks, months, years.
>
> So, to learn to become familiar and effective in using new and complex
> concepts, we should just accept that it sometimes may take a while. And
> that's it. It is all a matter of practice, exposure, and guidance.
That's a highly relevant wisdom! Learning something new needs practice /
time and good tutors / books / guidance. It doesn't matter whether the
new thing is "alphabet", "summation", "boolean", "programming" or "monoid".
Obviously, those who know what a monoid is have already invested years
of time practicing mathematics while those that even attack the name
"monoid" clearly lack this practice. It's like peano virtuosoes compared
to beginning keyboard pressers.
Concerning the question whether it is necessary to invest at least some
time on mathematical practice to learn Haskell, the answer is yes. There
is no shortcut to learning purely functional programming and reasoning.
Renaming "monoid" to "appendable" and "monad" to "warm fuzzy thing" are
but useless cosmetic changes that don't make anything easier.
How to learn? The options are, in order of decreasing effectiveness
university course teacher in person
book irc
mailing list
online tutorial
haskell wiki
haddock documentation
Usually, the best thing is to have a teacher, i.e. to go to a good CS
course on Haskell. Books and #haskell or the mailing list are a good
substitute, but require self-discipline. Both teachers and books cost
money, but you get what you pay for, the online tutorial, wiki and
haddock worlds are too messy to be effective until very late in the
learning process.
In particular, monoids are defined and used in
Richard Bird.
Introduction to Functional Programming using Haskel (2nd edition).
http://www.amazon.com/
Introduction-Functional-Programming-using-Haskell/dp/0134843460
I think that this book is a good benchmark for measuring the amount of
practice to be invested in learning Haskell.
Regards,
H. Apfelmus
More information about the Haskell-Cafe
mailing list