相关疑难解决方法(0)

输入奥秘.为什么这段代码会编译?

此代码无法编译:

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)

这是预料之中的,因为它含糊不清.这两种可能性是FloatDouble编译器不知道选择哪个<.

但是,此代码确实编译:

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

17
推荐指数
3
解决办法
1017
查看次数

标签 统计

haskell ×1