anchor.diff:  open System.Threading
   open Hopac
   open Hopac.Infixes
  +
  +[<AutoOpen>]
  +module Util =
  +  let inline (^) x = x
   
   module Stream =
     open Stream
  
positive.code: module Rx =
    let split xss =
      xss
      |> Seq.collect (fun (xs: IObservable<_>) ->
         [xs.Select(fun x ->  x      / 2)
          xs.Select(fun x -> (x + 1) / 2)])
    let join xss =
      xss
      |> Seq.pairwise
      |> Seq.map (fun (xs: IObservable<_>, ys: IObservable<_>) ->
         Observable.Zip(xs, ys, fun x y -> x+y))
  
    let ints n =
      Observable.Generate(0, (fun x -> x <= n), (fun x -> x+1), (fun x -> x))
  
negative.code:       let timer = Stopwatch.StartNew ()
        let result =
          diamond m n
          |> Stream.skip ^ int64 n
          |> Stream.get
          |> run
        let stop = timer.Elapsed
  