# Module Core_sexp.With_text

    module With_text: sig .. end

A `With_text.t` is a value paired with the full textual representation of its sexp. This is useful for dealing with the case where you want to keep track of a value along with the format of the s-expression it was generated from, which allows you to maintain formatting details, comments, etc.

The s-expression representation of a `With_text.t` is the raw text, stored as an atom. The bin_io representation contains both the bin_io of the underlying value and the bin_io'd version of the raw text.

This is similar to but simpler than the `With_layout` module included above (via `Sexp_intf.S`), which gives you access to a fully parsed version of the s-expression, with attached comments and layout information, to allow you to build layout-preserving s-expression transformations.

The invariants of a `x With_text.t` are broken if the `x` value is mutated.

    type 'a t

    val of_value : ('a -> Sexplib.Sexp.t) -> 'a -> 'a t

Generates a `t` from the value by creating the text automatically using the provided s-expression converter.

    val of_text : (Sexplib.Sexp.t -> 'a) ->
           ?filename:string -> string -> 'a t Or_error.t

Creates a `t` from the text, by first converting the text to an s-expression, and then parsing the s-expression with the provided converter.

    val value : 'a t -> 'a

    val text : 'a t -> string

    val bin_t : 'a Bin_prot.Type_class.t -> 'a t Bin_prot.Type_class.t

    val bin_read_t : 'a Bin_prot.Read.reader -> 'a t Bin_prot.Read.reader

    val __bin_read_t__ : 'a Bin_prot.Read.reader ->
           (int -> 'a t) Bin_prot.Read.reader

    val bin_reader_t : 'a Bin_prot.Type_class.reader ->
           'a t Bin_prot.Type_class.reader

    val bin_size_t : 'a Bin_prot.Size.sizer -> 'a t Bin_prot.Size.sizer

    val bin_write_t : 'a Bin_prot.Write.writer -> 'a t Bin_prot.Write.writer

    val bin_writer_t : 'a Bin_prot.Type_class.writer ->
           'a t Bin_prot.Type_class.writer

    val t_of_sexp : (Sexplib.Sexp.t -> 'a) -> Sexplib.Sexp.t -> 'a t

    val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.t

Generates a `t` from the value by creating the text automatically using the provided s-expression converter.
Creates a `t` from the text, by first converting the text to an s-expression, and then parsing the s-expression with the provided converter.
used for error reporting