I think Haskell's type system is one of it's main strengths, but that's just my opinion.
The thing about pure functional languages is that data Haskell's type system is immutablekey to its ability to isolate effects from pure code. IfUnless you can't change the value (or type) of an objectcan isolate effects in another way or you remove effects entirely, then it makes sense to use a strong static type system. So, yes, being is a purelyrequirement for pure functional language means that being statically typedprogramming.
Haskell is a wisevery good example of a language with a strong, static type system. If you want a broad and rounded education in computer science and programming language design in particular, Haskell would be an excellent choice as one of the languages that you should learn.
The type system shouldn't really get in the way thoughbe a huge obstacle. HaskellPeople who program tend to, even when using dynamic languages, follow typing conventions that can infer the types of just about anything unlike C++ where every variable must be annotatedencoded using Haskell's type system. Also, being able to create discriminated unions alleviates most of the bane of staticHaskell also features type systemsinference which alleviates verbosity when compared to languages like C++ and Java. When it spits outyou get an error messagesmessage, it just tellsthe compiler is only telling you at compile time what a language with dynamic types would tell you at runtime.
The opposite of a dynamic type system is a static type system, not a strong type system. A strong type system is the opposite of a weak type system.