anchor.diff:        stream <- force stream.Next
       result
   
  -  let run () =
  +  let run n =
  +    printf "Sequential:   "
       let timer = Stopwatch.StartNew ()
       let ps = primes n
       let d = timer.Elapsed
  -    printf "Primes are %A\n\nLast prime is %A\n\nSequential time %fs\n" ps ps.[ps.Length-1] d.TotalSeconds
  +    printf "%7d - %fs\n" ps.[ps.Length-1] d.TotalSeconds
   
   /////////////////////////////////////////////////////////////////////////
   
  
positive.code:     return result
    }
  
    let run () =
      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 "Primes are %A\n\nLast prime is %A\n\nAsync time %fs\n" ps ps.[ps.Length-1] d.TotalSeconds
  
  /////////////////////////////////////////////////////////////////////////
  
  do 
     printf "Running Sequential...\n"
     System.GC.Collect() ; Sequential.run ()
     printf "\n\nSleeping a bit...\n"
     System.Threading.Thread.Sleep (System.TimeSpan.FromSeconds 1.0)
  
     for i=1 to 3 do
       printf "Running HopacCh...\n"
       System.GC.Collect() ; HopacCh.run ()
       printf "\n\nSleeping a bit...\n"
       System.Threading.Thread.Sleep (System.TimeSpan.FromSeconds 3.0)
  
     printf "Running HopacPromise...\n"
     System.GC.Collect() ; HopacPromise.run ()
     printf "\n\nSleeping a bit...\n"
     System.Threading.Thread.Sleep (System.TimeSpan.FromSeconds 3.0)
  
     printf "Running Async...\n"
     System.GC.Collect() ; Async.run ()
  
negative.code:         Job.result result
      sieve >>= loop 0
  
    let run n =
      printf "HopacPromise: "
      let timer = Stopwatch.StartNew ()
      let ps = run (primes n)
      let d = timer.Elapsed
      printf "%7d - %fs\n" ps.[ps.Length-1] d.TotalSeconds
      
  /////////////////////////////////////////////////////////////////////////
  
  