I'm studying Haskell for the purpose of understanding functional programming, with the expectation that I'll apply the insight that I gain in other languages (Groovy, Python, JavaScript mainly.)I choose Haskell because I had the impression that it is very purely functional, and wouldn't allow for any reliance on state.I did not choose to learn Haskell because I was interested in navigating an extremely rigid type system.My question is this:  Is a strong type system a necessary by-product of an extremely pure functional language, or is this an unrelated design choice particular to Haskell?
Is Haskell's type system an obstacle to understanding functional programming?
functional programming;haskell;language features;type systems
I believe that understanding Haskell's type system is an amplifier to understanding functional programming.The thing about purely functional programming is that in the absence of side-effects, which allow you to do all sorts of things implicitly, purely functional programming makes the structure of your programs much more explicit.Haskell prevents you from shoving things under the carpet, forces you to deal with the structure of your program explicitly, and it teaches you a language to describe these structures: the language of types. Understanding types, particularly rich types as is Haskell, will make you a better programmer in any language.If Haskell wasn't strongly typed, concepts like monads, applicative functors and the like would never have been applied to programming.