2016-12-15 60 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