package base
Library
Module
Module type
Parameter
Class
Class type
include module type of struct include Shadow_stdlib end
with type 'a ref := 'a ref
with type ('a, 'b, 'c) format := ('a, 'b, 'c) format
with type ('a, 'b, 'c, 'd) format4 := ('a, 'b, 'c, 'd) format4
with type ('a, 'b, 'c, 'd, 'e, 'f) format6 :=
('a, 'b, 'c, 'd, 'e, 'f) format6
with module Pervasives := Pervasives
with module Array := Caml.Array
with module Buffer := Caml.Buffer
with module Bytes := Caml.Bytes
with module Char := Caml.Char
with module Float := Caml.Float
with module Hashtbl := Caml.Hashtbl
with module Int32 := Caml.Int32
with module Int64 := Caml.Int64
with module Lazy := Caml.Lazy
with module List := Caml.List
with module Map := Caml.Map
with module Nativeint := Caml.Nativeint
with module Printf := Caml.Printf
with module Queue := Caml.Queue
with module Random := Caml.Random
with module Set := Caml.Set
with module String := Caml.String
with module Sys := Caml.Sys
with module Uchar := Caml.Uchar
val classify_float : float -> fpclass
type nonrec in_channel = Pervasives.in_channel
type nonrec out_channel = Pervasives.out_channel
val stdin : in_channel
val stdout : out_channel
val stderr : out_channel
type nonrec open_flag = Pervasives.open_flag =
val open_out : string -> out_channel
val open_out_bin : string -> out_channel
val open_out_gen : open_flag list -> int -> string -> out_channel
val flush : out_channel -> unit
val output_char : out_channel -> char -> unit
val output_string : out_channel -> string -> unit
val output_bytes : out_channel -> bytes -> unit
val output : out_channel -> bytes -> int -> int -> unit
val output_substring : out_channel -> string -> int -> int -> unit
val output_byte : out_channel -> int -> unit
val output_binary_int : out_channel -> int -> unit
val output_value : out_channel -> 'a -> unit
val seek_out : out_channel -> int -> unit
val pos_out : out_channel -> int
val out_channel_length : out_channel -> int
val close_out : out_channel -> unit
val close_out_noerr : out_channel -> unit
val set_binary_mode_out : out_channel -> bool -> unit
val open_in : string -> in_channel
val open_in_bin : string -> in_channel
val open_in_gen : open_flag list -> int -> string -> in_channel
val input_char : in_channel -> char
val input_line : in_channel -> string
val input : in_channel -> bytes -> int -> int -> int
val really_input : in_channel -> bytes -> int -> int -> unit
val really_input_string : in_channel -> int -> string
val input_byte : in_channel -> int
val input_binary_int : in_channel -> int
val input_value : in_channel -> 'a
val seek_in : in_channel -> int -> unit
val pos_in : in_channel -> int
val in_channel_length : in_channel -> int
val close_in : in_channel -> unit
val close_in_noerr : in_channel -> unit
val set_binary_mode_in : in_channel -> bool -> unit
module LargeFile = Shadow_stdlib.LargeFile
val string_of_format : ('a, 'b, 'c, 'd, 'e, 'f) format6 -> string
val (^^) :
('a, 'b, 'c, 'd, 'e, 'f) format6 ->
('f, 'b, 'c, 'e, 'g, 'h) format6 ->
('a, 'b, 'c, 'd, 'g, 'h) format6
val unsafe_really_input : in_channel -> bytes -> int -> int -> unit
module Arg = Shadow_stdlib.Arg
module ArrayLabels = Shadow_stdlib.ArrayLabels
module BytesLabels = Shadow_stdlib.BytesLabels
module Callback = Shadow_stdlib.Callback
module Complex = Shadow_stdlib.Complex
module Digest = Shadow_stdlib.Digest
module Ephemeron = Shadow_stdlib.Ephemeron
module Filename = Shadow_stdlib.Filename
module Format = Shadow_stdlib.Format
module Gc = Shadow_stdlib.Gc
module Genlex = Shadow_stdlib.Genlex
module Lexing = Shadow_stdlib.Lexing
module ListLabels = Shadow_stdlib.ListLabels
module Marshal = Shadow_stdlib.Marshal
module MoreLabels = Shadow_stdlib.MoreLabels
module Obj = Shadow_stdlib.Obj
module Oo = Shadow_stdlib.Oo
module Parsing = Shadow_stdlib.Parsing
module Printexc = Shadow_stdlib.Printexc
module Scanf = Shadow_stdlib.Scanf
module Seq = Shadow_stdlib.Seq
module Sort = Shadow_stdlib.Sort
module Spacetime = Shadow_stdlib.Spacetime
module Stack = Shadow_stdlib.Stack
module StdLabels = Shadow_stdlib.StdLabels
module Stream = Shadow_stdlib.Stream
module StringLabels = Shadow_stdlib.StringLabels
module Weak = Shadow_stdlib.Weak
module Caml : sig ... end
module Polymorphic_compare = Polymorphic_compare
module Poly = Poly
module Int_replace_polymorphic_compare : sig ... end
include module type of struct include Int_replace_polymorphic_compare end
module Int64_replace_polymorphic_compare : sig ... end
module Nativeint_replace_polymorphic_compare : sig ... end
module Bool_replace_polymorphic_compare : sig ... end
module Char_replace_polymorphic_compare : sig ... end
module Uchar_replace_polymorphic_compare : sig ... end
module Float_replace_polymorphic_compare : sig ... end
module String_replace_polymorphic_compare : sig ... end
module Bytes_replace_polymorphic_compare : sig ... end
val (:=) : 'a ref -> 'a -> unit
val (!) : 'a ref -> 'a
val ref : 'a -> 'a ref
val decr : int Caml.ref -> unit
val incr : int Caml.ref -> unit
include module type of struct include Sexplib0.Sexp_conv end
Conversion of OCaml-values to S-expressions
val default_string_of_float : (float -> string) ref
default_string_of_float
reference to the default function used to convert floats to strings.
Initially set to fun n -> sprintf "%.20G" n
.
val write_old_option_format : bool ref
write_old_option_format
reference for the default option format used to write option values. If set to true
, the old-style option format will be used, the new-style one otherwise.
Initially set to true
.
val read_old_option_format : bool ref
read_old_option_format
reference for the default option format used to read option values. Of_sexp_error
will be raised with old-style option values if this reference is set to false
. Reading new-style option values is always supported. Using a global reference instead of changing the converter calling conventions is the only way to avoid breaking old code with the standard macros.
Initially set to true
.
We re-export a tail recursive map function, because some modules override the standard library functions (e.g. StdLabels
) which wrecks havoc with the camlp4 extension.
val sexp_of_unit : unit -> Sexplib0.Sexp.t
sexp_of_unit ()
converts a value of type unit
to an S-expression.
val sexp_of_bool : bool -> Sexplib0.Sexp.t
sexp_of_bool b
converts the value x
of type bool
to an S-expression.
val sexp_of_string : string -> Sexplib0.Sexp.t
sexp_of_bool str
converts the value str
of type string
to an S-expression.
val sexp_of_bytes : bytes -> Sexplib0.Sexp.t
sexp_of_bool str
converts the value str
of type bytes
to an S-expression.
val sexp_of_char : char -> Sexplib0.Sexp.t
sexp_of_char c
converts the value c
of type char
to an S-expression.
val sexp_of_int : int -> Sexplib0.Sexp.t
sexp_of_int n
converts the value n
of type int
to an S-expression.
val sexp_of_float : float -> Sexplib0.Sexp.t
sexp_of_float n
converts the value n
of type float
to an S-expression.
val sexp_of_int32 : int32 -> Sexplib0.Sexp.t
sexp_of_int32 n
converts the value n
of type int32
to an S-expression.
val sexp_of_int64 : int64 -> Sexplib0.Sexp.t
sexp_of_int64 n
converts the value n
of type int64
to an S-expression.
val sexp_of_nativeint : nativeint -> Sexplib0.Sexp.t
sexp_of_nativeint n
converts the value n
of type nativeint
to an S-expression.
val sexp_of_ref : ('a -> Sexplib0.Sexp.t) -> 'a ref -> Sexplib0.Sexp.t
sexp_of_ref conv r
converts the value r
of type 'a ref
to an S-expression. Uses conv
to convert values of type 'a
to an S-expression.
val sexp_of_lazy_t : ('a -> Sexplib0.Sexp.t) -> 'a lazy_t -> Sexplib0.Sexp.t
sexp_of_lazy_t conv l
converts the value l
of type 'a lazy_t
to an S-expression. Uses conv
to convert values of type 'a
to an S-expression.
val sexp_of_option : ('a -> Sexplib0.Sexp.t) -> 'a option -> Sexplib0.Sexp.t
sexp_of_option conv opt
converts the value opt
of type 'a
option
to an S-expression. Uses conv
to convert values of type 'a
to an S-expression.
val sexp_of_pair :
('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
('a * 'b) ->
Sexplib0.Sexp.t
sexp_of_pair conv1 conv2 pair
converts a pair to an S-expression. It uses its first argument to convert the first element of the pair, and its second argument to convert the second element of the pair.
val sexp_of_triple :
('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
('c -> Sexplib0.Sexp.t) ->
('a * 'b * 'c) ->
Sexplib0.Sexp.t
sexp_of_triple conv1 conv2 conv3 triple
converts a triple to an S-expression using conv1
, conv2
, and conv3
to convert its elements.
val sexp_of_list : ('a -> Sexplib0.Sexp.t) -> 'a list -> Sexplib0.Sexp.t
sexp_of_list conv lst
converts the value lst
of type 'a
list
to an S-expression. Uses conv
to convert values of type 'a
to an S-expression.
val sexp_of_array : ('a -> Sexplib0.Sexp.t) -> 'a array -> Sexplib0.Sexp.t
sexp_of_array conv ar
converts the value ar
of type 'a
array
to an S-expression. Uses conv
to convert values of type 'a
to an S-expression.
val sexp_of_hashtbl :
('a -> Sexplib0.Sexp.t) ->
('b -> Sexplib0.Sexp.t) ->
('a, 'b) Hashtbl.t ->
Sexplib0.Sexp.t
sexp_of_hashtbl conv_key conv_value htbl
converts the value htbl
of type ('a, 'b) Hashtbl.t
to an S-expression. Uses conv_key
to convert the hashtable keys of type 'a
, and conv_value
to convert hashtable values of type 'b
to S-expressions.
val sexp_of_opaque : 'a -> Sexplib0.Sexp.t
sexp_of_opaque x
converts the value x
of opaque type to an S-expression. This means the user need not provide converters, but the result cannot be interpreted.
val sexp_of_fun : ('a -> 'b) -> Sexplib0.Sexp.t
sexp_of_fun f
converts the value f
of function type to a dummy S-expression. Functions cannot be serialized as S-expressions, but at least a placeholder can be generated for pretty-printing.
Conversion of S-expressions to OCaml-values
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 record_check_extra_fields : bool ref
record_check_extra_fields
checks for extra (= unknown) fields in record S-expressions.
val of_sexp_error : string -> Sexplib0.Sexp.t -> 'a
of_sexp_error reason sexp
val of_sexp_error_exn : exn -> Sexplib0.Sexp.t -> 'a
of_sexp_error exc sexp
val unit_of_sexp : Sexplib0.Sexp.t -> unit
unit_of_sexp sexp
converts S-expression sexp
to a value of type unit
.
val bool_of_sexp : Sexplib0.Sexp.t -> bool
bool_of_sexp sexp
converts S-expression sexp
to a value of type bool
.
val string_of_sexp : Sexplib0.Sexp.t -> string
string_of_sexp sexp
converts S-expression sexp
to a value of type string
.
val bytes_of_sexp : Sexplib0.Sexp.t -> bytes
bytes_of_sexp sexp
converts S-expression sexp
to a value of type bytes
.
val char_of_sexp : Sexplib0.Sexp.t -> char
char_of_sexp sexp
converts S-expression sexp
to a value of type char
.
val int_of_sexp : Sexplib0.Sexp.t -> int
int_of_sexp sexp
converts S-expression sexp
to a value of type int
.
val float_of_sexp : Sexplib0.Sexp.t -> float
float_of_sexp sexp
converts S-expression sexp
to a value of type float
.
val int32_of_sexp : Sexplib0.Sexp.t -> int32
int32_of_sexp sexp
converts S-expression sexp
to a value of type int32
.
val int64_of_sexp : Sexplib0.Sexp.t -> int64
int64_of_sexp sexp
converts S-expression sexp
to a value of type int64
.
val nativeint_of_sexp : Sexplib0.Sexp.t -> nativeint
nativeint_of_sexp sexp
converts S-expression sexp
to a value of type nativeint
.
val ref_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a ref
ref_of_sexp conv sexp
converts S-expression sexp
to a value of type 'a ref
using conversion function conv
, which converts an S-expression to a value of type 'a
.
val lazy_t_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a lazy_t
lazy_t_of_sexp conv sexp
converts S-expression sexp
to a value of type 'a lazy_t
using conversion function conv
, which converts an S-expression to a value of type 'a
.
val option_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a option
option_of_sexp conv sexp
converts S-expression sexp
to a value of type 'a option
using conversion function conv
, which converts an S-expression to a value of type 'a
.
val pair_of_sexp :
(Sexplib0.Sexp.t -> 'a) ->
(Sexplib0.Sexp.t -> 'b) ->
Sexplib0.Sexp.t ->
'a * 'b
pair_of_sexp conv1 conv2 sexp
converts S-expression sexp
to a pair of type 'a * 'b
using conversion functions conv1
and conv2
, which convert S-expressions to values of type 'a
and 'b
respectively.
val triple_of_sexp :
(Sexplib0.Sexp.t -> 'a) ->
(Sexplib0.Sexp.t -> 'b) ->
(Sexplib0.Sexp.t -> 'c) ->
Sexplib0.Sexp.t ->
'a * 'b * 'c
triple_of_sexp conv1 conv2 conv3 sexp
converts S-expression sexp
to a triple of type 'a * 'b * 'c
using conversion functions conv1
, conv2
, and conv3
, which convert S-expressions to values of type 'a
, 'b
, and 'c
respectively.
val list_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a list
list_of_sexp conv sexp
converts S-expression sexp
to a value of type 'a list
using conversion function conv
, which converts an S-expression to a value of type 'a
.
val array_of_sexp : (Sexplib0.Sexp.t -> 'a) -> Sexplib0.Sexp.t -> 'a array
array_of_sexp conv sexp
converts S-expression sexp
to a value of type 'a array
using conversion function conv
, which converts an S-expression to a value of type 'a
.
val hashtbl_of_sexp :
(Sexplib0.Sexp.t -> 'a) ->
(Sexplib0.Sexp.t -> 'b) ->
Sexplib0.Sexp.t ->
('a, 'b) Hashtbl.t
hashtbl_of_sexp conv_key conv_value sexp
converts S-expression sexp
to a value of type ('a, 'b) Hashtbl.t
using conversion function conv_key
, which converts an S-expression to hashtable key of type 'a
, and function conv_value
, which converts an S-expression to hashtable value of type 'b
.
val opaque_of_sexp : Sexplib0.Sexp.t -> 'a
opaque_of_sexp sexp
val fun_of_sexp : Sexplib0.Sexp.t -> 'a
fun_of_sexp sexp
Exception converters
val sexp_of_exn : exn -> Sexplib0.Sexp.t
sexp_of_exn exc
converts exception exc
to an S-expression. If no suitable converter is found, the standard converter in Printexc
will be used to generate an atomic S-expression.
val sexp_of_exn_opt : exn -> Sexplib0.Sexp.t option
sexp_of_exn_opt exc
converts exception exc
to Some sexp
. If no suitable converter is found, None
is returned instead.
module Exn_converter = Sexplib0.Sexp_conv.Exn_converter
include module type of struct include Hash.Builtin end
val hash_fold_nativeint : nativeint Hash.folder
val hash_fold_int64 : int64 Hash.folder
val hash_fold_int32 : int32 Hash.folder
val hash_fold_char : char Hash.folder
val hash_fold_int : int Hash.folder
val hash_fold_bool : bool Hash.folder
val hash_fold_string : string Hash.folder
val hash_fold_float : float Hash.folder
val hash_fold_unit : unit Hash.folder
val hash_fold_option : 'a Hash.folder -> 'a option Hash.folder
val hash_fold_list : 'a Hash.folder -> 'a list Hash.folder
val hash_fold_lazy_t : 'a Hash.folder -> 'a lazy_t Hash.folder
val hash_fold_ref_frozen : 'a Hash.folder -> 'a Caml.ref Hash.folder
Hash support for array
and ref
is provided, but is potentially DANGEROUS, since it incorporates the current contents of the array/ref into the hash value. Because of this we add a _frozen
suffix to the function name.
Hash support for string
is also potentially DANGEROUS, but strings are mutated less often, so we don't append _frozen
to it.
Also note that we don't support bytes
.
val hash_fold_array_frozen : 'a Hash.folder -> 'a array Hash.folder
val hash_nativeint : nativeint -> Hash.hash_value
val hash_int64 : int64 -> Hash.hash_value
val hash_int32 : int32 -> Hash.hash_value
val hash_char : char -> Hash.hash_value
val hash_int : int -> Hash.hash_value
val hash_bool : bool -> Hash.hash_value
val hash_string : string -> Hash.hash_value
val hash_float : float -> Hash.hash_value
val hash_unit : unit -> Hash.hash_value
include module type of struct include Int_replace_polymorphic_compare end
exception Not_found_s of Sexplib0.Sexp.t