Base.Sexp
Type of S-expressions
val hash_fold_t : Hash.state -> t -> Hash.state
val hash : t -> Hash.hash_value
include module type of Sexplib0.Sexp with type t := Sexplib0.Sexp.t
val t_of_sexp : Sexplib0.Sexp.t -> Sexplib0.Sexp.t
val sexp_of_t : Sexplib0.Sexp.t -> Sexplib0.Sexp.t
exception Not_found_s of Sexplib0.Sexp.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 * Sexplib0.Sexp.t
Of_sexp_error (exn, sexp)
the exception raised when an S-expression could not be successfully converted to an OCaml-value.
val message : string -> (string * Sexplib0.Sexp.t) list -> Sexplib0.Sexp.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)
val default_indent : int ref
default_indent
reference to default indentation level for human-readable conversions.
Initialisation value: 2.
val pp_hum : Format.formatter -> Sexplib0.Sexp.t -> unit
pp_hum ppf sexp
outputs S-expression sexp
to formatter ppf
in human readable form.
val pp_hum_indent : int -> Format.formatter -> Sexplib0.Sexp.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 -> Sexplib0.Sexp.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 -> Sexplib0.Sexp.t -> unit
Same as pp_mach
.
val to_string_hum : ?indent:int -> Sexplib0.Sexp.t -> string
to_string_hum ?indent sexp
converts S-expression sexp
to a string in human readable form with indentation level indent
.
val to_string_mach : Sexplib0.Sexp.t -> string
to_string_mach sexp
converts S-expression sexp
to a string in machine readable (i.e. most compact) form.
val to_string : Sexplib0.Sexp.t -> string
Same as to_string_mach
.
val of_float_style : [ `Underscores | `No_underscores ] ref
val of_int_style : [ `Underscores | `No_underscores ] ref
module Private = Sexplib0.Sexp.Private
val t_sexp_grammar : t Sexplib0.Sexp_grammar.t
val invariant : t -> 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.
include Comparable.S with type t := t
include Comparisons.S with type t := t
compare t1 t2
returns 0 if t1
is equal to t2
, a negative integer if t1
is less than t2
, and a positive integer if t1
is greater than t2
.
ascending
is identical to compare
. descending x y = ascending y x
. These are intended to be mnemonic when used like List.sort ~compare:ascending
and List.sort
~cmp:descending
, since they cause the list to be sorted in ascending or descending order, respectively.
clamp_exn t ~min ~max
returns t'
, the closest value to t
such that between t' ~low:min ~high:max
is true.
Raises if not (min <= max)
.
val clamp : t -> min:t -> max:t -> t Or_error.t
include Comparator.S with type t := t
val comparator : (t, comparator_witness) Comparator.comparator