package oseq
  Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
    Page
Library
Module
Module type
Parameter
Class
Class type
Source
Module OSeq.Generator
This interface is designed to make it easy to build complex streams of values in a way that resembles Python's generators (using "yield").
  let naturals : int OSeq.t = OSeq.Generator.(
      let rec aux n = yield n >>= fun () -> aux (n+1) in
      run (aux 0)
    )  type 'a tree = E | N of 'a tree * 'a * 'a tree
  let traverse (t:'a tree) : 'a OSeq =
    let open OSeq.Generator in
    let rec trav = function
      | E -> empty
      | N (l,v,r) -> trav l >>= fun () -> yield v >>= fun () -> trav r
    in
    run (trav t)val empty : 'a tEmpty generator, yields no value
val yield : 'a -> 'a tYield one value
gen1 >>= fun () -> gen2 first yields all values from gen1, and then all values from gen2