为什么这个Haskell语句在GHCi中工作,但无法编译?

为什么这个Haskell语句在GHCi中工作,但无法编译?,haskell,unicode,Haskell,Unicode,在GHCi中,以下工作非常出色: let (≠) = (/=) 但尝试从源文件编译此文件会导致错误: (≠) = (/=) 以下是错误,供参考: 由于使用“/=”而产生的不明确类型变量“a0”会阻止约束“(Eq a0)”的求解 我做错了什么?您需要添加一个类型签名,否则Haskell试图分配一个特定的类型,但由于类型不明确而感到困惑 (≠) :: Eq a => a -> a -> Bool (≠) = (/=) 是否尝试添加类型签名(≠) :: Eq a=>a->a->

在GHCi中,以下工作非常出色:

let (≠) = (/=)
但尝试从源文件编译此文件会导致错误:

(≠) = (/=)
以下是错误,供参考:

由于使用“/=”而产生的不明确类型变量“a0”会阻止约束“(Eq a0)”的求解


我做错了什么?

您需要添加一个类型签名,否则Haskell试图分配一个特定的类型,但由于类型不明确而感到困惑

(≠) :: Eq a => a -> a -> Bool
(≠) = (/=)

是否尝试添加类型签名<代码>(≠) :: Eq a=>a->a->Bool?Facepalm。是的,就是这样!请回答这个问题,这样我就可以接受它了?
:在GHCi中设置-XNOMONOMONOMONOMOMONISMRITY限制将无误加载“Gets Middle”可能不是最准确的表达方式,因为这意味着GHCi不会“get Middle”,在某种程度上比GHC更聪明。这里的相关关键字是单态限制。@sepp2k是的,这个答案措词不当。