此代码无法编译:
default ()
f :: RealFloat a => a
f = 1.0
g :: RealFloat a => a
g = 1.0
h :: Bool
h = f < g --Error. Ambiguous.
Run Code Online (Sandbox Code Playgroud)
这是预料之中的,因为它含糊不清.这两种可能性是Float和Double编译器不知道选择哪个<.
但是,此代码确实编译:
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?
Run Code Online (Sandbox Code Playgroud)
为什么?为什么Haskell在这里不会像上面的例子那样混淆,+选择哪个(for Float …
haskell ×1