Escribe misterios. ¿Por qué se compila este código?
Este código no compila:
default ()
f :: RealFloat a => a
f = 1.0
g :: RealFloat a => a
g = 1.0
h :: Bool
h = f < g --Error. Ambiguous.
Esto se espera porque es ambiguo. Las dos posibilidades sonFloat
yDouble
y el compilador no sabe qué<
para recoger.
Sin embargo, este códigohace 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 qué no se confunde Haskell aquí, de manera similar al ejemplo anterior, acerca de cuál+
elegir (paraFloat
oDouble
)?