Digite mistérios. Por que esse código é compilado?
Este código não compila:
default ()
f :: RealFloat a => a
f = 1.0
g :: RealFloat a => a
g = 1.0
h :: Bool
h = f < g --Error. Ambiguous.
Isso é esperado porque é ambíguo. As duas possibilidades sãoFloat
eDouble
e o compilador não sabe qual<
escolher.
No entanto, esse códigofaz compilar:
default ()
f :: RealFloat a => a
f = 1.0
g :: RealFloat a => a
g = 1.0
h :: RealFloat a => a
h = f + g --Why does this compile?
Por quê? Por que Haskell não está confuso aqui, de maneira semelhante ao exemplo acima, sobre o qual+
escolher (porFloat
ouDouble
)?