在解析简单的html页面时,我正在学习haskell箭头。任务是下载基本区域的站点baseRegion = Region "Yekaterinburg" "http://example.com/r/ekb"
,解析到另一个区域的链接(通过 hxt):
regions :: ArrowXml cat => cat a (NTree XNode) -> cat a Region
regions tree =
tree >>> multi (hasName "a" >>> hasAttrValue "class" (== ".regionlink")) >>>
proc x -> do
rname <- getText <<< getChildren -< x
rurl <- getAttrValue "href" -< x
returnA -< Region rname rurl
并将基础区域附加到结果中:
allRegions :: ArrowXml cat => cat a (NTree XNode) -> cat a Region
- 怎么写
allRegions
?或者,更好的是,我应该在哪里挖掘来写它? - 另一个问题是如何不仅附加
regions
's 结果,而且插入baseRegion
到区域列表的某个特定位置(例如在第二个元素之后或在名称以 'E' 开头的元素之后)?