Legend:
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.t =
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)
type'a t
Type for writing generators (of type 'a OSeq.Generator.t) that can be used to construct an iterator of type 'a OSeq.t