Haskell:输入中的语法错误(意外的`=')

时间:2014-11-21 22:06:28

标签: haskell functional-programming syntax-error hugs

我正在尝试实现一个比较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

但我有一个不同的错误:

  

类型签名中的语法错误(意外关键字"如果")

现在我真的不知道发生了什么。

1 个答案:

答案 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