3

은 "패턴 구문 분석 오류"이고 이것은 내가 가지고있는 코드 :하스켈 :

connected :: [(Integer,Integer)] -> Bool 
connected [] = True 
connected [(_,_)] = True 
connected (a,b):(c,d):xs 
       | a > c  = False 
       |otherwise = connected (c,d):xs 

나는 그것이

error: parse error in pattern: connected

했다

을 보여줍니다 GHCi로드 할 때 내가 실수했다?

+0

마이너 스타일 노트 :'foo | x = 거짓 | 그렇지 않으면 = 무언가'(IMO)가 더 일반적으로'foo = not x && something'로 쓰여집니다. 귀하의 경우에는'connected (...) = a <= c && connected (...)'를 사용할 수 있습니다. – chi

답변

7

당신은 두 곳에서 당신의 단점 식 괄호를 추가해야합니다

connected :: [(Integer,Integer)] -> Bool 
connected [] = True 
connected [(_,_)] = True 
connected ((a,b):(c,d):xs)       -- (2) 
       | a > c  = False 
       | otherwise = connected ((c,d):xs) -- (1) 
  1. 기능 응용 프로그램은 너무 connected (c,d) : xs(connected (c,d)) : xs로서 해석됩니다, 중위 사업자보다 더 긴밀하게 결합한다.

  2. 패턴 표현식에서도 비슷한 현상이 발생합니다. 도움이되지 않는 오류 메시지는 오히려 불행한 일입니다.

주관적인 측면 노트 : 나는 공백을 생략 생각하기 때문에 나는 항상 미묘하게 운전자가보다 긴밀 정말보다 결합하는 것을 의미한다 (a : b 대신 a:b, 예를 들어) 주변 공백 중위 연산자를 쓰는 것이 좋습니다.