動的言語は、型に関する条件とそれ以外の条件を区別しない
つまり (Show a) => ... と if ... then ... を区別したくない

それが危険だというなら、問題の本質は if の危険性であって
静的型付けは対症療法の一つにすぎない