1

我一直收到这条消息,我做错了什么?

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)
4

2 回答 2

7

你有一个不匹配的括号:

flpile (Pile (a,(b,c))) = ...
                      ^ this was missing

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

于 2013-04-16T23:06:02.763 回答
5

在这一行

flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]

您在( Pile (a,(b,c)) )忘记了右括号

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

于 2013-04-16T23:09:08.240 回答