package ecaml

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

An Emacs symbol, i.e., an Emacs value that satisfies Value.is_symbol.

(Info-goto-node "(elisp)Symbols")

include module type of struct include Ecaml_value.Symbol end
include Ecaml_value.Value.Subtype
type t = private Ecaml_value.Value.t

We expose private value for free identity conversions when the value is nested in some covariant type, e.g. (symbols : Symbol.t list :> Value.t list) rather than List.map symbols ~f:Symbol.to_value.

val sexp_of_t : t -> Sexplib0.Sexp.t
val eq : t -> t -> bool

eq t1 t2 = Value.eq (to_value t1) (to_value t2), i.e. eq checks whether the Emacs values underlying t1 and t2 are physically equal. This is different than phys_equal t1 t2, because we don't always wrap eq Emacs values in phys_equal OCaml values. I.e. phys_equal t1 t2 implies eq t1 t2, but not the converse.

val is_in_subtype : Ecaml_value.Value.t -> bool
val of_value_exn : Ecaml_value__.Value0.t -> t
val to_value : t -> Ecaml_value__.Value0.t
include Core.Equal.S with type t := t
val equal : t Base.Equal.equal
include Ecaml_value.Value.Funcall with type t := t
val funcall0 : ?should_profile:bool -> t -> Ecaml_value.Value.t
val funcall1 : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t
val funcall2 : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t
val funcall3 : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t
val funcallN : ?should_profile:bool -> t -> Ecaml_value.Value.t list -> Ecaml_value.Value.t
val funcallN_array : ?should_profile:bool -> t -> Ecaml_value.Value.t array -> Ecaml_value.Value.t
val funcall0_i : ?should_profile:bool -> t -> unit
val funcall1_i : ?should_profile:bool -> t -> Ecaml_value.Value.t -> unit
val funcall2_i : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> unit
val funcall3_i : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> unit
val funcall4_i : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> unit
val funcall5_i : ?should_profile:bool -> t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> unit
val funcallN_i : ?should_profile:bool -> t -> Ecaml_value.Value.t list -> unit
val funcallN_array_i : ?should_profile:bool -> t -> Ecaml_value.Value.t array -> unit
val funcall_int_int_value_value_unit : ?should_profile:bool -> t -> int -> int -> Ecaml_value.Value.t -> Ecaml_value.Value.t -> unit
val funcall_int_int_value_unit : ?should_profile:bool -> t -> int -> int -> Ecaml_value.Value.t -> unit
val intern : string -> t
type symbol := t

Accessors

val name : t -> string

(describe-function 'symbol-name)

val function_exn : t -> Ecaml_value.Value.t

(describe-function 'symbol-function)

val function_is_defined : t -> bool

(describe-function 'fboundp)

val compare_name : t -> t -> int
val create : name:string -> t

(describe-function 'make-symbol).

val gensym : ?prefix:string -> unit -> t

(describe-function 'gensym).

val set_function : t -> Ecaml_value.Value.t -> unit

(describe-function 'fset).

module Automatic_migration : sig ... end

Automatic_migration supports migrating from one symbol-naming convention to another. Use Automatic_migration.add to add a function that maps names from the old convention to the new. Once you've done that, the following functions will automatically migrate their symbol argument, and and an obsolete alias pointing from the old name to the new.

module Property : sig ... end
module type Subtype = sig ... end
module Make_subtype (Arg : sig ... end) : Subtype with type t := Arg.t
module Compare_name : sig ... end