DON'T start functional programming with monads. Familiarize with currying, pattern matching, how to create data types in Haskell, using recursion instead of loops, higher order functions, list comprehensions, type classes, polymorphism in Haskell (different than subtyping in OOP). Ignore monads for a while. To understand monads you must have a good grip of those concepts. You can start with http://learnyouahaskell.com/chapters.
You'll see Haskell tutorials delay telling about the concept. There's a reason.
You'll see Haskell tutorials delay telling about the concept. There's a reason.
For a bird's eye of monads you can check this: http://www.reddit.com/r/programming/comments/64th1/monads_in...
If you are ready, read and do exercises in http://blog.sigfpe.com/2007/04/trivial-monad.html and then http://blog.sigfpe.com/2006/08/you-could-have-invented-monad....