let main () : unit Deferred.t =
  (* First, we grab stdin as usual. *)
  let stdin = Lazy.force Reader.stdin in

  (* The Reader module has an awesome function that's perfect for iterating
   * over the lines of a reader. Reader.lines returns a string pipe where each
   * element in the pipe is a line from the reader. We can then iterate over
   * the pipe and print the lines to stdout. *)

  let lines = Reader.lines stdin in
  Pipe.iter_without_pushback lines ~f:print_endline