【发布时间】:2013-11-07 10:58:20
【问题描述】:
我正在创建一个 C# 代码将使用的模块,所以我宁愿不直接返回 LazyList<>。如果我这样做了,C# 将不得不引用FSharp.PowerPack,这看起来很奇怪。
所以我宁愿返回IList<>,但是当我尝试做类似的事情时:
let x = LazyList.ofSeq {0..10}
let y = x :> IList<int32>
但是,这给了我错误:
The type 'LazyList<int> is not compatible with the type 'IList<int>'
这让我相信LazyList<> 不是implement IList<>。这是真的吗?
我错过了什么?
【问题讨论】:
-
这个post 可能会有所帮助
-
IList<_>公开了诸如Count之类的内容,这仅在列表完全构建时才有意义,因此LazyList<_>没有实现该接口是有意义的。 -
@kvb:我接受了 DoctorJones (stackoverflow.com/questions/2689986/…) 的话……但它无法完成
IList<>的大部分功能绝对是有道理的 -
我认为这实际上是指不同的
LazyList<_>类,而不是 F#。 -
ExtCore 库中有
LazyList,它也不实现IList(github.com/jack-pappas/ExtCore/blob/master/ExtCore/…),但我认为这是一个合理的补充,所以也许你可以提交一个拉取请求并使用它?