0

我已经开始了关于 HXT 的友好教程教程,以使用 haskell 解析 XML 文件。

在教程的第一页中,我们尝试从 xml 文件中检索来宾。为此,有以下功能。

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.

指出表达式中的 operator ->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 }}

谁能帮我理解我错过了什么?

感谢您的回复!

4

1 回答 1

1

你记得放

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

在文件的顶部?

于 2012-03-14T23:06:16.680 回答