如何在简单的HXT函数中解决这个问题?

时间:2012-03-14 22:58:35

标签: xml haskell xml-parsing hxt

我已经开始使用友好教程tutorial on HXT来解析带有haskell的XML文件。

在本教程的第一页中,我们尝试从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中的运算符 - &gt; 有一个解析错误, 我在没有帮助的情况下尝试了很多修改。比如把这一切写成一行

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 个答案:

答案 0 :(得分:1)

你记得放

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

位于文件顶部?