2012-03-14 86 views
0

我已经开始友好教程tutorial on HXT解析与haskell的XML文件。如何在简单的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中加载文件。我仍然得到这个错误:

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

任何人都可以帮我理解我错过了什么吗?

感谢您的回复!

回答

1

你记得把

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

在你的文件的顶部?

+0

哦!它与这些线路一起工作,非常感谢 – 2012-03-14 23:10:39