문제

나는 친절한 튜토리얼을 시작했습니다 튜토리얼 하스켈을 사용하여 파일을 구문 분석합니다.

이 튜토리얼의 첫 페이지에서는 게스트 파일을 검색하려고 합니다.그리고 그것에 대한 다음과 같은 기능이 있습니다.

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.나는 아직도 이 오류를 얻는다 :

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

사실 그 연산자를 가리키는 -> 표현식에서 proc x -> do 구문 분석 오류가 있음, 나는 도움없이 많은 수정을 시도했다.이 모든 것을 한 줄에 쓰는 것처럼

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 }}

아무도 내가 놓친 것을 이해하도록 도와 줄 수 있습니까?

모든 회신 주셔서 감사합니다!

도움이 되었습니까?

해결책

당신은 넣어 기억나요

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

파일의 맨 위에?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top