
The 1 is not necessarily an Integer nor is it necessarily a Float, Double
or Rational. GHC applies so called type-defaulting rules to make a
best guess in this scenario. Informally, if it could be an Integer (due
to lack of static evidence to the contrary), then you can expect the
defaulting rules to assign it that type.
--
Jason Dusek
On Apr 5, 2012 7:45 AM,
writes: Why does (read "2" + 1) works, but (read "2.3" + 1) fail at runtime?
Try this:
read "2.3" + 1 :: Float
Or this:
read "2.3" + 1.0
The reason that your version didn't work is because GHCi is guessing
On Thu, Apr 05, 2012 at 01:18:39PM +0000, Amy de Buitléir wrote: that you
want the read operation to parse an Integer, since you're adding it to 1.
This is explanation does not seem to be enough once we consider the type of the literal 1:
Prelude> :t 1 1 :: Num a => a
That is, the literal 1 is overloaded to any numeric type. It is not necessarily an Integer.
Romildo
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners