[Haskell-beginners] Overloading resolution with numbers

j.romildo at gmail.com j.romildo at gmail.com
Thu Apr 5 15:54:55 CEST 2012


On Thu, Apr 05, 2012 at 01:18:39PM +0000, Amy de Buitléir wrote:
>  <j.romildo <at> gmail.com> 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 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



More information about the Beginners mailing list