2016-12-15 69 views
0

我是Haskell的新手,并且遇到了这个问题。我正在使用 gio = \x -> x == reverse (x),它返回错误信息ERROR C:\Users\Gbaramidze\Desktop\gio.hs:18 - Unresolved top-level overloading找不到原因。希望你能帮助。在lambda函数中使用反向

评分: 我按照您的指示提供了一个签名,但没有奏效。我得到一个错误:

- Cannot justify constraints in explicitly typed binding 
*** Expression : gio 
*** Type   : [a] -> Bool 
*** Given context :() 
*** Constraints : Eq a 

我使用拥抱,因为这是我们在大学使用的工具。我使用的代码在上面,我使用.hs文件并使用Hugs打开它。

+1

既然你是Haskell的新手,你可能错误地解释了这个问题?如果您提供了一个最简单的示例并在此处发布其代码,可能会有所帮助。 – bipll

+2

添加一个类型签名'gif :: [a] - > Bool'。另外,除非你有充分的理由,否则请停止使用拥抱。它暂时还没有得到支持。 GHC是目前用于编译器的Haskell。 – Alec

+0

Ack。我的编辑窗口已关闭,但您当然需要'Eq a'约束。 'gif :: Eq a => [a] - > Bool' – Alec

回答

3

因为您使用的是(==),所以您必须限制该函数仅适用于支持此操作的类型。正确的类型签名看起来是这样的:

gio :: Eq a => [a] -> Bool 
gio = \x -> x == reverse x 
+0

它的工作,非常感谢你:) – Rasty