Haskell:输入'='的解析错误

use*_*354 1 implementation haskell haskell-platform

我一直在接受这个消息,我做错了什么?

data Pile a =  Pile [a] deriving  (Show,Eq,Ord)  

flpile:: (Eq a, Eq b, Eq c) => Pile (a,(b,c))-> Pile (a,b,c)
flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]

asocr :: (a,(b,c)) -> (a,b,c)
asocr (a,(b,c)) = (a,b,c)
Run Code Online (Sandbox Code Playgroud)

ham*_*mar 7

你有一个不匹配的括号:

flpile (Pile (a,(b,c))) = ...
                      ^ this was missing
Run Code Online (Sandbox Code Playgroud)

为避免将来出现此问题,我建议您在编辑器中启用"突出显示匹配括号"选项(如果有).如果没有,请找一个更好的编辑器.


kaa*_*aan 5

在这一行

flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]
Run Code Online (Sandbox Code Playgroud)

你忘记了一个闭合支撑(桩(a,(b,c)))

当你纠正错误时,你会收到错误.那是因为(a,(b,c))你的数据定义不是列表.我不知道,你想用你的代码实现什么,但是你可以把它改成Pile [(a,(b,c))],所以它会编译(如果这对你的目的有意义).