Module Ppx_sexp_conv_lib.Sexp

include module type of struct include Sexplib0.Sexp end
type t = Sexp_type.Sexp.t =
  1. | Atom of string
  2. | List of t list
module type Pretty_print_to_formatter = Sexplib0.Sexp.Pretty_print_to_formatter
module type Pretty_printing_helpers_private = Sexplib0.Sexp.Pretty_printing_helpers_private
module type Pretty_printing_helpers = Sexplib0.Sexp.Pretty_printing_helpers
module type Pretty_printing = Sexplib0.Sexp.Pretty_printing
val t_of_sexp : t -> t @@ portable
val sexp_of_t : t -> t @@ portable
val sexp_of_t__stack : t @ local -> t @ local @@ portable
val equal : t -> t -> bool @@ portable
val compare : t -> t -> int @@ portable
val globalize : t @ local -> t @@ portable
exception Not_found_s of t

Not_found_s is used by functions that historically raised Not_found, to allow them to raise an exception that contains an informative error message (as a sexp), while still having an exception that can be distinguished from other exceptions.

exception Of_sexp_error of exn * t

Of_sexp_error (exn, sexp) the exception raised when an S-expression could not be successfully converted to an OCaml-value.

Helpers

val message : string -> (string * t) list -> t @@ portable
Helper to build nice s-expressions for error messages.  It imitates the behavior of
[[%message ...]] from the ppx_sexp_message rewriter.

[message name key_values] produces a s-expression list starting with atom [name] and
followed by list of size 2 of the form [(key value)].  When the key is the empty
string, [value] is used directly instead as for [[%message]].

For instance the following code:

{[
  Sexp.message "error"
    [ "x", sexp_of_int 42
    ; "" , sexp_of_exn Exit
    ]
]}

produces the s-expression:

{[
  (error (x 42) Exit)
]}

Defaults

val default_indent : int Basement.Dynamic.t @@ portable

default_indent reference to default indentation level for human-readable conversions.

Initialisation value: 1.

Pretty printing of S-expressions

module Make_pretty_printing = Sexplib0.Sexp.Make_pretty_printing
include Pretty_printing with type output := string

Printing to formatters

val pp_hum : Format.formatter -> t -> unit @@ portable

pp_hum ppf sexp outputs S-expression sexp to formatter ppf in human readable form.

val pp_hum_indent : int -> Format.formatter -> t -> unit @@ portable

pp_hum_indent n ppf sexp outputs S-expression sexp to formatter ppf in human readable form and indentation level n.

val pp_mach : Format.formatter -> t -> unit @@ portable

pp_mach ppf sexp outputs S-expression sexp to formatter ppf in machine readable (i.e. most compact) form.

val pp : Format.formatter -> t -> unit @@ portable

Same as pp_mach.

Conversion to strings

val to_string_hum : ?indent:int -> ?max_width:int -> t -> string @@ portable

to_string_hum ?indent ?max_width sexp converts S-expression sexp to a string in human readable form with indentation level indent and target maximum width max_width. Note long atoms may overflow max_width.

  • parameter indent

    default = Dynamic.get default_indent

  • parameter max_width

    default = 78

val to_string_mach : t -> string @@ portable

to_string_mach sexp converts S-expression sexp to a string in machine readable (i.e. most compact) form.

val to_string : t -> string @@ portable

Same as to_string_mach.

Conversion to buffers

val to_buffer_hum : buf:Buffer.t -> ?indent:int -> ?max_width:int -> t -> unit @@ portable

to_buffer_hum ~buf ?indent ?max_width sexp outputs the S-expression sexp converted to a string in human readable form to buffer buf with indentation level indent and target maximum width max_width. Note long atoms may overflow max_width.

  • parameter indent

    default = Dynamic.get default_indent

  • parameter max_width

    default = 78

val to_buffer_mach : buf:Buffer.t -> t -> unit @@ portable

to_buffer_mach ~buf sexp outputs the S-expression sexp converted to a string in machine readable (i.e. most compact) form to buffer buf.

val to_buffer : buf:Buffer.t -> t -> unit @@ portable

to_buffer ~buf sexp same as to_buffer_mach.

val to_buffer_gen : buf:'buffer -> add_char:('buffer -> char -> unit) -> add_string:('buffer -> string -> unit) -> t -> unit @@ portable

to_buffer_gen ~buf ~add_char ~add_string sexp outputs the S-expression sexp converted to a string to buffer buf using the output functions add_char and add_string.

module Pretty_printing_helpers_private = Sexplib0.Sexp.Pretty_printing_helpers_private

See Pretty_printing.to_string_hum, to_string_mach, and to_string, respectively.

val to_string_hum__stack : ?indent:int -> ?max_width:int -> t @ local -> string @ local @@ portable

WARNING to_string_hum__stack globalizes t if it is allocated on the stack.

val to_string_mach__stack : t @ local -> string @ local @@ portable
val to_string__stack : t @ local -> string @ local @@ portable

Styles

val of_float_style : [ `Underscores | `No_underscores ] Basement.Dynamic.t @@ portable
val of_int_style : [ `Underscores | `No_underscores ] Basement.Dynamic.t @@ portable
module Private = Sexplib0.Sexp.Private