[Haskell] pros and cons of static typing and side effects ?