sig
  type 'a or_error = [ `Error of string | `Ok of 'a ]
  type 'a sequence = ('-> unit) -> unit
  type 'a gen = unit -> 'a option
  type t = [ `Atom of string | `List of Sexp_lib.t list ]
  type sexp = Sexp_lib.t
  val atom : string -> Sexp_lib.t
  val list : Sexp_lib.t list -> Sexp_lib.t
  val pp : Sexp_lib.t CCFormat.printer
  val to_string : Sexp_lib.t -> string
  val to_chan : Pervasives.out_channel -> Sexp_lib.t -> unit
  val to_file : string -> Sexp_lib.t -> unit
  type 'a parse_result = [ `End | `Error of string | `Ok of 'a ]
  module Decoder :
    sig
      type t
      val of_lexbuf : Lexing.lexbuf -> Sexp_lib.Decoder.t
      val next : Sexp_lib.Decoder.t -> Sexp_lib.sexp Sexp_lib.parse_result
    end
  val parse_string : string -> Sexp_lib.t Sexp_lib.or_error
  val parse_chan : Pervasives.in_channel -> Sexp_lib.t Sexp_lib.or_error
  val parse_chan_list :
    Pervasives.in_channel -> Sexp_lib.t list Sexp_lib.or_error
  val parse_file : string -> Sexp_lib.t Sexp_lib.or_error
  val parse_file_list : string -> Sexp_lib.t list Sexp_lib.or_error
end