.net IEnumerable<;T>;无法枚举或与seq不兼容<;T>;

.net IEnumerable<;T>;无法枚举或与seq不兼容<;T>;,.net,f#,.net,F#,我是新来F#但Seq应该和IEnumerable一样吗 let test = makeAsyncRequestPage "some web page" |> Async.RunSynchronously |> getPageResult //Returns a Seq<HtmlNode> |> Seq.head<HtmlNode> |> fun h -> h.ChildNodes

我是新来F#但Seq应该和IEnumerable一样吗

let test = makeAsyncRequestPage "some web page"
        |> Async.RunSynchronously
        |> getPageResult //Returns a Seq<HtmlNode>
        |> Seq.head<HtmlNode>
        |> fun h -> h.ChildNodes.Nodes //IEnumerable<HtmlNode>
        |> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes//IEnumerable
|>乐趣h->[用于h中的行->行]
运行代码时出现错误,
h
是IEnumerable,出现以下错误:

“类型”(unit->System.Collections.Generic.IEnumerable)不是可以用此语法枚举其值的类型,即与seq、IEnumerable或IEnumerable都不兼容,并且没有GetEnumerator方法“


有什么不对,这应该按照我通知的那样工作。

h.ChildNodes.Nodes
是一种方法,因此您需要应用
单位
参数:

let test = makeAsyncRequestPage "some web page"
        |> Async.RunSynchronously
        |> getPageResult //Returns a Seq<HtmlNode>
        |> Seq.head<HtmlNode>
        |> fun h -> h.ChildNodes.Nodes ()
        |> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes()
|>乐趣h->[用于h中的行->行]

h.ChildNodes.Nodes
是一种方法,因此需要应用
单元
参数:

let test = makeAsyncRequestPage "some web page"
        |> Async.RunSynchronously
        |> getPageResult //Returns a Seq<HtmlNode>
        |> Seq.head<HtmlNode>
        |> fun h -> h.ChildNodes.Nodes ()
        |> fun h -> [for row in h -> row]
let test=makeAsyncRequestPage“一些网页”
|>异步运行
|>getPageResult//返回一个Seq
|>序号头
|>fun h->h.ChildNodes.Nodes()
|>乐趣h->[用于h中的行->行]

您在某个地方缺少了一个
()
参数,可能是在
h.ChildNodes.Nodes
之后,所以您尝试枚举一个函数
单元->IEnumerable
,而不是
IEnumerable
。感谢这是解决方案,我们现在对它视而不见。您是怎么看的,从错误消息中看不到它吗?通常当你有一个函数时,当你需要一个值,这意味着你没有在某个地方提供足够的参数。错误消息表明for表达式中的参数类型错误,这是前一行中
h.Child.Nodes
的结果。您缺少
()
参数,可能在
h.ChildNodes.Nodes
之后,所以您尝试枚举一个函数
unit->IEnumerable
,而不是
IEnumerable
。感谢这是解决方案,我们现在对它视而不见。您是如何看待它的,从错误消息中看不到它吗?通常当你有一个函数时,当你需要一个值,这意味着你没有在某个地方提供足够的参数。错误消息表明for表达式中的参数具有错误的类型,这是前一行中
h.Child.Nodes
的结果。此外,您不需要在
Seq.head
调用中指定类型参数。我可能倾向于将最后两个lambda表达式合并为一个:
|>fun h->[对于h.ChildNodes.Nodes()->行中的行]
而且您不需要在
Seq.head
调用中指定类型参数。我可能倾向于将最后两个lambda表达式合并为一个:
|>fun h->[对于h.ChildNodes.Nodes()->行中的行]