我一直收到这条消息,我做错了什么?
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)
我一直收到这条消息,我做错了什么?
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)
你有一个不匹配的括号:
flpile (Pile (a,(b,c))) = ...
^ this was missing
为避免将来出现此问题,我建议在您的编辑器中启用“突出显示匹配括号”选项(如果有)。如果没有,请找一个更好的编辑器。
在这一行
flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]
您在( Pile (a,(b,c)) )忘记了右括号
当你更正它时,你会得到一个错误。那是因为(a,(b,c))
正如您的数据定义所说,这不是一个列表。我不知道,你想用你的代码实现什么,但你可以把它改成Pile [(a,(b,c))]
,所以它会编译(如果这对你的目的有意义的话)。