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 是分数,而 5 只是 Num,但两者都必须可以从 read 中返回,因为前三个命令有效,并且 (+) 应该适用于任何一对数字。这里发生了什么 ?