Haskell has the status like Hebrew ,Latin ,or Greek in the natural languages. Knowledge of Haskell will help you understand concepts of functional programming. I am profiting very much Haskell lectures which gave by Erick Meijer.
http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/
Generic functions increase reusability and composability . Let us start with the small example and we want write a function that gives biggest element of a given tuple. Well, if we implement this function Haskell.
Please read more: http://www.paul-abraham.com/GenericAlgorithms.doc