Haskell の初心者は、最初の 3 つは問題なかったのに、4 番目のステートメントが失敗した理由を知りたがっています。
Prelude> read "5.3" + 5.0 -- ok
10.3
Prelude> read "5" + 5 -- ok
10
Prelude> read "5" + 5.3 -- ok
10.3
Prelude> read "5.3" + 5 -- huh ???
*** Exception: Prelude.read: no parse
:t 5.3 は Fractional であるのに対し、5 は単なる Num であることがわかりますが、最初の 3 つのコマンドが機能したため、どちらも read から返される必要があり、(+) は Nums の任意のペアで機能するはずです。何が起きてる ?