anchor.diff:  
   module PrimesStream
   
  +open System
  +open System.Diagnostics
   open Hopac
   open Hopac.Extra
   open Hopac.Alt.Infixes
   open Hopac.Job.Infixes
  -open System.Diagnostics
  -
  -/////////////////////////////////////////////////////////////////////////
  -
  -let n = 10000
   
   /////////////////////////////////////////////////////////////////////////
   
  
positive.code:         Job.result result
      sieve >>= loop 0
  
    let run () =
      let timer = Stopwatch.StartNew ()
      let ps = run (primes n)
      let d = timer.Elapsed
      printf "Primes are %A\n\nLast prime is %A\n\nHopacPromise time %fs\n" ps ps.[ps.Length-1] d.TotalSeconds
      
  /////////////////////////////////////////////////////////////////////////
  
  
negative.code:     return result
    }
  
    let run n =
      printf "Async:        "
      use cancelSource = new System.Threading.CancellationTokenSource ()
      let timer = Stopwatch.StartNew ()
      let ps = Async.RunSynchronously (primes n, -1, cancelSource.Token)
      let d = timer.Elapsed
      cancelSource.Cancel ()
      printf "%7d - %fs\n" ps.[ps.Length-1] d.TotalSeconds
  
  /////////////////////////////////////////////////////////////////////////
  
  let inline cleanup () =
    for i=1 to 10 do
      GC.Collect ()
      Threading.Thread.Sleep 50
  
  do let ns = [10; 100; 1000; 10000]
     for n in ns do
       Sequential.run n ; cleanup ()
     for n in ns do
       HopacCh.run n ; cleanup ()
     for n in ns do
       HopacPromise.run n ; cleanup ()
     for n in ns do
       Async.run n ; cleanup ()
  