2011-05-02 3 views
2

DFS 알고리즘을 구현할 때 명령형 기능을 사용해야합니다. 코드는 다음과 같습니다haskell의 패턴 분석 오류

type ST s a = s -> (a, s) 

returnST :: a -> ST s a 
returnST a s = (a, s) 

thenST :: ST s a -> (a -> ST s b) -> ST s b 
(m 'thenST' k) s = k a t where (a, t) = m s 

그러나 GHCi 6.12.3은 마지막 코드 줄에서 '패턴의 구문 분석 오류'를 제공합니다. 나는 종이에서이 코드 조각을 얻는다. 이 신문의 저자가 사용하는 컴파일러가 지금과 같이 엄격한 문법 규칙을 가지고 있지 않을 가능성이 있습니까? 이 오류를 수정하는 방법은 무엇입니까?

+0

당신은 DFS가 가변 상태를 필요로하지 않는다는 것을 알고 있습니까? 귀하의 첫 번째 문장은 그렇지 않은 것을 의미합니다. –

+0

@TomMD 방금 종이를 읽고 아이디어를 구현하고 싶습니다. – machinarium

답변

6

변경

'thenST' 

`thenST` 

에 역 따옴표는 중위 연산자로 보통의 함수 이름을 설정합니다. 그들은 편집기, 워드 프로세서 또는 문서 뷰어에 의해 작은 따옴표로 바뀔 수 있습니다.

+0

죄송합니다. 질문에 실수를하였습니다. 내 코드에서는 'thenST'입니다. 문제는 backticks와 관련이 없습니다. – machinarium

+0

@ machinarium : 그러면 더 이상 당신을 도울 수 없습니다. GHCi 6.12.1에서는 백틱을 삽입 할 때 게시 한 코드를로드합니다. –