2014-11-21 5 views
0

두 목록을 비교하여 동일한 지 확인하는 기능을 구현하려고합니다.Haskell : 입력시 구문 오류 (예기치 않은`= ')

compare :: String -> String -> Bool 

    compare [] [] = True -- error here 
    compare (x,xs) (y,ys) = if x == y 
     then compare xs ys 
     else False 

하지만 라인이 오류가 위의 표시가 점점 계속 : 구문은 나에게 잘 보이는

Syntax error in input (unexpected `=')

내가 함께 '='를 교체했을 때 '->', 그것은 잘 작동하지만, 다음 줄에서 같은 오류가 발생했습니다. 그래서 같은했다 :

compare :: String -> String -> Bool 

     compare [] [] -> True 
     compare (x,xs) (y,ys) -> if x == y -- new error here 
      then compare xs ys 
      else False 

하지만 다른 오류 가지고 :

Syntax error in type signature (unexpected keyword "if")

지금 정말 무슨 일이 일어나고 있는지 아무 생각합니다.

답변

4

원래의 첫 번째 기능은 잘못된 패턴 매칭이라는 사실 외에도 옳습니다. 그것은 다음과 같이해야합니다 : @ThreeFx 제안 또한으로

compare (x:xs) (y:ys) -- Not compare (x,xs) (y,ys) 

은, 제대로 코드를 포맷 할. 궁극적으로 다음과 같이 표시되어야합니다.

compare :: String -> String -> Bool 
compare [] [] = True 
compare (x:xs) (y:ys) = if x == y 
         then compare xs ys 
         else False 
+0

예. 올바른 것입니다. 고마워요! – SalmaFG