anchor.diff:      return! !streams |> xs2yJ
     }
   
  -  let rec ofAlt xA = xA |>>?* fun x -> Cons (x, ofAlt xA)
  +  let rec ofAlt xA = xA |>>* fun x -> Cons (x, ofAlt xA)
   
     let rec merge ls rs =
       mergeSwap ls rs <|>* mergeSwap rs ls
  
positive.code:        | Cons (l, ls) -> Cons (l, merge rs ls)
  
    let rec append (ls: Streams<_>) (rs: Streams<_>) =
      ls >>=?* function
         | Nil -> upcast rs
         | Cons (l, ls) -> cons l (append ls rs)
  
    let rec choose x2yO xs =
      xs >>=?* function
         | Nil -> nil
         | Cons (x, xs) ->
           match x2yO x with
  
negative.code:     |> memo
  
    let rec collectLatest (x2ys: 'x -> Streams<'y>) (xs: Streams<'x>) =
      xs >>=* function
         | Nil -> nil
         | Cons (x, xs) ->
           upcast append (takeUntil xs (x2ys x)) (collectLatest x2ys xs)
  
    let rec throttle timeout xs =
      xs >>=* function
         | Nil -> nil
         | Cons (x, xs) -> throttleGot1 timeout xs x
    and throttleGot1 timeout xs x =
  