Because this works

Prelude> read "2.3" + 1.0
3.3

Seriously I can only assume that via the inference it decides based on the one that the string must be of type Int and uses the Read instance of Int to parse it; whereas that string is obviously a float.

That is what I think it does.

On Thu, Apr 5, 2012 at 4:16 PM, <j.romildo@gmail.com> wrote:
Hello.

Consider the following ghci session:

  Prelude> :t read "2" + 1
  read "2" + 1 :: (Num a, Read a) => a

  Prelude> :t read "2.3" + 1
  read "2.3" + 1 :: (Num a, Read a) => a

  Prelude> read "2" + 1
  3

  Prelude> read "2.3" + 1
  *** Exception: Prelude.read: no parse

Why does (read "2" + 1) works, but (read "2.3" + 1) fail at runtime?

Romildo

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://www.haskell.org/mailman/listinfo/beginners



--
Google+: https://plus.google.com/111881868112036203454