The most dynamically typed functional language is arguably Scheme. That said, Haskell's type system is an indicator of it's purity. It's a question of "how does one measure purity?". Haskell's type system let's you easily cordon off impure actions in `IO`. To do that, you need a static type system.

But let's say Haskell's type system has nothing to do with functional programming. It would still be the height of hubris to claim that the type system wouldn't help you in this educational endeavor. Haskell's type system is rich and complex, ad all the more interesting when compared to the type systems of C++ and OCaml.

Is it obstacle? No, I think it is an asset. Try to consider how to deal with Haskell's laziness without `IO` for example.