이 문제를 간단한 기능에서 해결하는 방법은 무엇입니까?
-
14-12-2019 - |
문제
나는 친절한 튜토리얼을 시작했습니다 튜토리얼 하스켈을 사용하여 파일을 구문 분석합니다.
이 튜토리얼의 첫 페이지에서는 게스트 파일을 검색하려고 합니다.그리고 그것에 대한 다음과 같은 기능이 있습니다.
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
파일의 맨 위에?
제휴하지 않습니다 StackOverflow