我已经开始了友好的教程关于hxt 解析XML文件的教程与haskell。

在教程的第一页中,我们尝试从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.
.

指向Expression 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