The Haskell code below works.
main = print $ x + y
x = 1
y = 2.3
This results 3.3. x isn't Int because x is used with (+) operator that also takes 2.3.
On the other hand, the code below causes a type error in compile time.
main = print $ x + y
x = 1
y = 2.3
z = x :: Int
error:
No instance for (Fractional Int)
  arising from the literal `2.3'
Possible fix: add an instance declaration for (Fractional Int)
In the expression: 2.3
In an equation for `y': y = 2.3
You can make x ambiguous with NoMonomorphismRestriction option.
{-# LANGUAGE NoMonomorphismRestriction #-}
or -XNoMonomorphismRestriction in command line option.
Thanks @ikegami__!
 

No comments:
Post a Comment