我正在尝试实现一个比较2个列表的功能,看看它们是否相同。语法对我来说很好:
compare :: String -> String -> Bool
compare [] [] = True -- error here
compare (x,xs) (y,ys) = if x == y
then compare xs ys
else False
但我一直在上面标记的行中收到此错误:
输入中的语法错误(意外的`=')
当我尝试更换' ='使用' - >',它工作正常,但它在以下行中给出了相同的错误。所以我做了同样的事情:
compare :: String -> String -> Bool
compare [] [] -> True
compare (x,xs) (y,ys) -> if x == y -- new error here
then compare xs ys
else False
但我有一个不同的错误:
类型签名中的语法错误(意外关键字"如果")
现在我真的不知道发生了什么。
答案 0 :(得分:4)
你的原始第一个功能是正确的,除了你错误的模式匹配这一事实。它应该是这样的:
compare (x:xs) (y:ys) -- Not compare (x,xs) (y,ys)
同样@ThreeFx建议,请正确格式化您的代码。最终它应该是这样的:
compare :: String -> String -> Bool
compare [] [] = True
compare (x:xs) (y:ys) = if x == y
then compare xs ys
else False