
@Andrew:
This probably works quite well for mainstream programming languages (since they're all so similar), but is unlikely to work at all for Haskell (since, as far as I know, no other programming language on Earth is remotely like it - Miranda excluded). Even Lisp and Erland are nothing like Haskell, and they're supposedly based on the same ideas.
I didnt know this when I _started_ :) So, thats why I am learning Haskell in exclusion.
Not a bad way to learn to use a tool. You might want to stick to things that involve simple I/O and complex processing rather than the other way round though. ;-) (For example, I wrote a program that renders an animation of the solutions of a simple differential equation by numerical integration. The math is complex; the I/O just involves dumping millions of numbers into a big text file.)
Yes, as someone pointed out, Haskell was meant for a lot of computation, and IO is just a part of the story!
For the longest time I couldn't remember whether it's "monad" or "monand"... but anyway, yeah, it's a common problem. It's not actually complicated ones you understand it; it's just that it's so abstract that it's hard to explain. It's a bit like trying to explain to somebody what a "magnet" is... it's not a complex concept, just hard to describe.
But, being a computer science student, I think I need to look into it too! I like the quote found on this site: http://patryshev.com/monad/m-intro.html <quote> Monads in programming seem to be the most mysterious notion of the century. I find two reasons for this: * lack of familiarity with category theory; * many authors carefully bypass any mention of categories. It's like talking about electricity without using calculus. Good enough to replace a fuse, not good enough to design an amplifier. </quote>
I'm a maths nerd. To me, Haskell looks like an advanced term-rewrite system similar to Mathematica. It was quite easy to learn the basics. What took longer was learning to approach problems in the right way. The way you'd do things in an object oriented language is usually NOT the way you'd do it in Haskell. (Unless you enjoy making your life hard...) Unfortunately, that's all practice.
Ah, I am not familiar with the "term-rewrite" you are talking about. I will Google it up then. Thanks :) ========================================================================