Module Ecaml_value__Value.Type
An 'a Type.t
is an isomorphism between 'a
and a subset of Value.t
.
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
include S
val create : Core_kernel.Sexp.t -> ('a -> Core_kernel.Sexp.t) -> (value -> 'a) -> ('a -> value) -> 'a t
val with_of_value_exn : 'a t -> (value -> 'a) -> 'a t
val to_sexp : 'a t -> 'a -> Core_kernel.Sexp.t
val bool : bool t
val float : float t
val ignored : unit t
val int : int t
val string : string t
val string_cached : string t
string_cached
is likestring
, except it usesof_utf8_bytes_cached
.
val unit : unit t
val value : value t
val list : 'a t -> 'a list t
val vector : 'a t -> 'a array t
val array_as_list : 'a t -> 'a array t
Represent an ocaml array as an elisp list, without creating an intermediate ocaml list.
val option : 'a t -> 'a option t
option
representsNone
asnil
andSome a
ascons v nil
, wherev
is the representation ofa
.
val nil_or : 'a t -> 'a option t
nil_or t_
representsNone
asnil
andSome a
asv
, wherev
is the representation ofa
. This is a common representation used by Elisp functions. But it is only correct ifnil
is not a representation of any value int
; in that situation useType.option_
.
val alist : 'a t -> 'b t -> ('a * 'b) list t
val tuple : 'a t -> 'b t -> ('a * 'b) t
Represent a tuple (a,b) as the elisp cons cell (a . b)
val sexpable : (module Core_kernel.Sexpable with type t = 'a) -> name:Core_kernel.Sexp.t -> 'a t
Embed a sexpable ocaml type, so we can save values of the type in emacs, e.g. as buffer local variables
val path_list : string list t
A list of directories. Each element is a string (directory name) or nil (try default directory). nil values are converted to ".", which has the same meaning.
val id : 'a t -> 'a Core_kernel.Type_equal.Id.t
val to_value : 'a t -> 'a -> value
val of_value_exn : 'a t -> value -> 'a
val name : _ t -> Core_kernel.Sexp.t
val map : 'a t -> name:Core_kernel.Sexp.t -> of_:('a -> 'b) -> to_:('b -> 'a) -> 'b t
val map_id : 'a t -> Core_kernel.Sexp.t -> 'a t
map_id type_ name
is short formap type_ ~name ~of_:Fn.id ~to_:Fn.id
. It is not interchangeable withtype_
itself.
module type Enum = Ecaml_value__.Value_intf.Enum
val enum : Core_kernel.Sexp.t -> (module Enum with type t = 'a) -> ('a -> value) -> 'a t