F#2010 Seq.generate_using

nin*_*rid 2 f# visual-studio-2010

在Visual Studio 2010中是否存在Seq.generate_using的替代/解决方法?FSharp.PowerPack.dll不适用于2010 AFAIK

Bri*_*ian 5

(抱歉,PowerPack尚未在2010年上市.)

我不记得CTP更新是否已经存在,但在内部位中我收到警告:

不推荐使用此构造.此功能将在以后的版本中删除.如有必要,从F#PowerPack中获取其实现的副本并将其复制到您的应用程序中

所以这是PowerPack的代码:

#nowarn "9"

namespace Microsoft.FSharp.Compatibility

open System.Collections.Generic

module Seq = 
  let combine     ie1 ie2  = Seq.zip ie1 ie2
  let nonempty (ie : seq<'T>)  = use e = ie.GetEnumerator() in e.MoveNext() //'

  let generate openf compute closef = 
        seq { let r = openf() 
              try 
                let x = ref None
                while (x := compute r; (!x).IsSome) do
                    yield (!x).Value
              finally
                 closef r }

  let generate_using (openf : unit -> ('b :> System.IDisposable)) compute = //'
        generate openf compute (fun (s:'b) -> s.Dispose()) //'

  let cons (x:'T) (s: seq<'T>) = 
        seq { yield x
              yield! s }
Run Code Online (Sandbox Code Playgroud)