Lispの型宣言と違い、Haskellの型宣言は、Haskellで書かれたコード全てに
強く強制されるから、コンパイラは、型的に正しいコードしか存在しないことを
仮定してコード生成ができる。