I have a Python script runs as both Python 2 and Python 3, using runtime checks to determine which methods to call. This sort of thing is much harder in Haskell.<p>A more ambitious example: imagine the web with JavaScript replaced by Haskell. Your code compiles and typechecks in your browser, but that doesn&#x27;t guarantee that it will do the same in mine, or a different version of yours, or tomorrow&#x27;s new browser. So these static type guarantees are very weak because they only apply to a single runtime environment.<p>The less control you have over the runtime environment, the more important dynamic typechecks become. You can also have static type checking, but you have to be prepared for the fact that your static types will be different at runtime. This property confounds most languages with static type systems, including Haskell.