1. camlspotter
  2. planck


planck / lib / stream.mli

(** Stream module. See Stream_intf for more details *)
open Stream_intf

(** Import the constructors *)
type 'a desc = 'a Spotlib.Spot.Stream.desc = 
  | Cons of 'a * 'a desc lazy_t
  | Null

(* CR jfuruse: Bad naming: It is a real creator of the stream, but called Extend. *)
module Extend (Base : Base) : X
  with type pos  = Base.Pos.t
  and  type elem = Base.Elem.t
  and  type attr = Base.Attr.t
(** The functor [Extend] creates a stream module based on [Base] *)

module Make (Base : Base) : S
  with type Pos.t  = Base.Pos.t
  and  type Elem.t = Base.Elem.t
  and  type Attr.t = Base.Attr.t
(** Same as [Extend] but includes [Base : Base].
    Do not use [Make] if your [Base] contains something more than [Stream_intf.Base],
    since the [Base] in the result of [Make] does not contain the extra things not 
    in [Stream_intf.Base]. Instead, you must declare:

    module M = struct
      include Base
      include Extend(Base)