anchor.diff:    let one x = Alt.always (Cons (x, zero<_>)) :> Streams<'x>
   
     let inline memo x = Promise.Now.delayAsAlt x
  -  let inline (>>=?*) x f = x >>=? f |> memo
  -  let inline (|>>?*) x f = x |>>? f |> memo
  +  let inline (>>=*) x f = x >>=? f |> memo
  +  let inline (|>>*) x f = x |>>? f |> memo
     let inline (<|>*) x y = x <|> y |> memo
   
     let rec ofEnum (xs: IEnumerator<'x>) = memo << Job.thunk <| fun () ->
  
positive.code:     return! !streams |> xs2yJ
    }
  
    let rec ofAlt xA = xA |>>?* fun x -> Cons (x, ofAlt xA)
  
    let rec merge ls rs =
      mergeSwap ls rs <|>* mergeSwap rs ls
  
negative.code:           | Some y -> cons y (choose x2yO xs)
  
    let rec map x2y xs =
      xs |>>* function
         | Nil -> Nil
         | Cons (x, xs) -> Cons (x2y x, map x2y xs)
  
    let rec joinWith (join: Streams<_> -> Streams<_> -> Streams<_>)
                     (xxs: Streams<Streams<_>>) =
      xxs >>=* function
          | Nil -> nil
          | Cons (xs, xxs) -> upcast join xs (joinWith join xxs)
  
  