haskell - 在 HXT 中使用列表

标签 haskell hxt

我疯狂地尝试使用定义的简单 >>.>. 函数 here .

我想获取 HXT 中节点的所有文本的长度。我正在使用这个:

runX (doc //> hasName "div" //> text >>. unlines)

其中 doc 是我的 XmlTree 箭头。

这让我获得所有 div 的所有文本(包括它们拥有的任何子元素中的文本)。它以字符串形式获取文本,因为我使用的是 unlines。现在我想获取该字符串的长度,所以我尝试:

runX (doc //> hasName "div" //> text >>. unlines >. length)

HXT 似乎神奇地将我的字符串转换回数组,因为我得到了:

[0,17,0,20,0,11,...]

我想要的是所有这些Int的总和。我该怎么做?

更新:

文本函数定义如下:

text = deep (getChildren >>> getText)

我发现如果我跳过 getChildren 位,则可以正常工作:

text = deep getText

只要我只有一个 div 元素。如果我有多个 div 元素,我会返回一个包含每个元素长度的数组。

最佳答案

考虑接下来的两个例子:

Prelude Text.XML.HXT.Core> flip runLA undefined $ (constL [1, 2] >>>  arr id) >>. take 1
[1]
Prelude Text.XML.HXT.Core> flip runLA undefined $  constL [1, 2] >>> (arr id  >>. take 1)
[1,2]

区别仅在括号内。 如果没有括号,它将作为第二个示例。因此,您遇到的问题是由于固定因素不同。

关于haskell - 在 HXT 中使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159740/

相关文章:

Haskell 在 ADT 上的递归问题

haskell - 为什么 .hs 文件中的 "(2+2.0)"双倍,而 GHCi 中的 "Fractional a => a"?

haskell - 为海量代数数据类型泛型推导任意?

javascript - 计算整数列表的均值、最小值、最大值和总和 - 复杂性如何?

linux - 如何在具有 Windows (PE) 目标的 Linux 机器上交叉编译 haskell 程序?

xml - HXT——什么是 "deep"?

haskell - HXT 获取第一个元素 : refactor weird arrow

html - 是否可以通过其中包含 <a> 的 hxt &lt;textarea&gt; 进行解析?