2012-03-14 5 views
0

나는 haskell로 XML 파일을 구문 분석하기위한 친숙한 튜토리얼 tutorial on HXT을 시작했다.간단한 HXT 기능에서이 문제를 해결하는 방법은 무엇입니까?

자습서의 첫 번째 페이지에서 우리는 xml 파일에서 guest를 검색하려고합니다. 그리고 거기에는 다음과 같은 기능이 있습니다.

data Guest = Guest {firstName, lastName :: String} 
    deriving (Show, Eq) 

getGuest = deep (isElem >>> hasName "guest") >>>         
proc x -> do                 
    fname <- getText <<< getChildren <<< deep (hasName "fname") -< x    
    lname <- getText <<< getChildren <<< deep (hasName "lname") -< x    
    returnA -< Guest {firstName = fname, lastName = lname} 

하지만 인터프리터 ghci에서 파일을로드하려고 할 때. 표현 proc x -> do에서> 내가 도움없이 많은 수정을 시도했습니다 구문 분석 오류, 있다 - 운영자 는 사실을 가리키는

Prelude> :l hxt_tuto.hs 
hxt_tuto.hs:15:37: parse error on input `->' 
Failed, modules loaded: none. 

: 나는 아직도이 오류가 발생합니다. 이 모든 것을 한 줄에 쓰는 것 같습니다.

getGuest2 = deep (isElem >>> hasName "guest") >>> proc x -> do { fname <- getText <<< getChildren <<< deep (hasName "fname") -< x; lname <- getText <<< getChildren <<< deep (hasName "lname") -< x; returnA -< Guest {firstName = fname, lastName = lname }} 

아무도 내가 놓친 것을 이해할 수 있습니까?

답장을 보내 주셔서 감사합니다!

답변

1

당신은 파일의 상단에

{-# LANGUAGE Arrows, NoMonomorphismRestriction #-} 
import Text.XML.HXT.Core 

을 넣어 기억나요?

+0

오! 이 라인들과 함께 작동합니다, 고맙습니다. –

관련 문제