Module Base__Sexp

type t = Sexplib0.Sexp.t =
| Atom of string
| List of t list

Type of S-expressions

include sig ... end
val compare : t ‑> t ‑> int
val hash_fold_t : Base.Hash.state ‑> t ‑> Base.Hash.state
val hash : t ‑> Base.Hash.hash_value
include module type of Sexplib0.Sexp with type Sexp.t := Sexplib0.Sexp.t

Type of S-expressions

type t =
| Atom of string
| List of t list
val t_of_sexp : t ‑> t
val sexp_of_t : t ‑> t
val equal : t ‑> t ‑> bool
val compare : t ‑> t ‑> int
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

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 Pervasives.ref

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

Initialisation value: 2.

Pretty printing of S-expressions

val pp_hum : Format.formatter ‑> t ‑> unit

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

val pp_hum_indent : int ‑> Format.formatter ‑> t ‑> unit

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

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

Same as pp_mach.

Conversion to strings

val to_string_hum : ?⁠indent:int ‑> t ‑> string

to_string_hum ?indent sexp converts S-expression sexp to a string in human readable form with indentation level indent.

  • Parameter indent: default = !default_indent
val to_string_mach : t ‑> string

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

val to_string : t ‑> string

Same as to_string_mach.

Styles

val of_float_style : [ `Underscores | `No_underscores ] Pervasives.ref
val of_int_style : [ `Underscores | `No_underscores ] Pervasives.ref
module Private = Sexplib0.Sexp.Private
val of_string : unit

Base has never had an of_string function. We expose a deprecated of_string here so that people can find it (e.g. with merlin), and learn what we recommend. This of_string has type unit because we don't want it to be accidentally used.