Я пытаюсь применить функции Seq в IEnumerable. Более конкретно, он System.Windows.Forms.HtmlElementCollection
, который реализует ICollection
и IEnumerable
.
Так как F # seq
является IEnumerable, я думал, что могу написать
let foo = myHtmlElementCollection |> Seq.find (fun i -> i.Name = "foo")
но компилятор не будет иметь этого, и жалуется, что "Тип" HtmlElementCollection "несовместим с типом" seq < "a > ".
Однако компилятор охотно принимает IEnumerable в выражении последовательности for .. in ..
:
let foo = seq { for i in myHtmlElementCollection -> i } |> Seq.find (fun i -> i.Name = "foo")
Что мне нужно сделать, чтобы IEnumerable обрабатывался так же, как и любой старый F # seq
?
NB: Этот вопрос отмечен как дубликат, но это не так. Связанный "дубликат" относится к нетипизированным последовательностям (seq из выражения seq {for...}), тогда как мой вопрос касается типизированных последовательностей.