Type Geheimnisse. Warum kompiliert dieser Code?

Dieser Code wird nicht kompiliert:

default ()

f :: RealFloat a => a
f = 1.0

g :: RealFloat a => a
g = 1.0

h :: Bool
h = f < g --Error. Ambiguous.

Dies wird erwartet, weil es nicht eindeutig ist. Die beiden Möglichkeiten sindFloat undDouble und der Compiler weiß nicht, welches< nehmen

Allerdings ist dieser Code does compile:

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?

Warum? Warum ist Haskell hier nicht verwirrt, ähnlich wie im obigen Beispiel, über welches+ zum auswählen (fürFloat oderDouble)?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage