有没有办法在 utop 中列出模块的所有功能?
Is there a way to list all functions of a module in utop?
在utop中,打开库(通过~require ...)或打开模块(通过open Module_name
)时,有没有办法获取库或模块的内容? utop 通过完成选项卡提供此功能,但我想一次查看所有功能。
不一定在utop,可以用下面的:
# module type S = module type of Module_of_your_interest;;
module type S =
sig
...
...
end
警告:某些模块的签名非常大。
在utop
中你可以使用#show
命令。例如
utop # #show Stack;;
module Stack :
sig
type 'a t
exception Empty
val create : unit -> 'a t
val push : 'a -> 'a t -> unit
val pop : 'a t -> 'a
val top : 'a t -> 'a
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val is_empty : 'a t -> bool
val length : 'a t -> int
val iter : ('a -> unit) -> 'a t -> unit
end
如果您对库中可用的函数名称感兴趣,您可以写:
#module S = Library_name;;
例如:
#module M = String;;
输出将是:
module M : sig
external length : string -> int = "%string_length"
external get : string -> int -> char = "%string_safe_get"
external set : string -> int -> char -> unit = "%string_safe_set"
external create : int -> string = "caml_create_string"
val make : int -> char -> string
val copy : string -> string
val sub : string -> int -> int -> string
val fill : string -> int -> int -> char -> unit
val blit : string -> int -> string -> int -> int -> unit
val concat : string -> string list -> string
val iter : (char -> unit) -> string -> unit
val iteri : (int -> char -> unit) -> string -> unit
val map : (char -> char) -> string -> string
val trim : string -> string
val escaped : string -> string
val index : string -> char -> int
val rindex : string -> char -> int
val index_from : string -> int -> char -> int
val rindex_from : string -> int -> char -> int
val contains : string -> char -> bool
val contains_from : string -> int -> char -> bool
val rcontains_from : string -> int -> char -> bool
val uppercase : string -> string
val lowercase : string -> string
val capitalize : string -> string
val uncapitalize : string -> string
type t = string
val compare : t -> t -> int
external unsafe_get : string -> int -> char = "%string_unsafe_get"
external unsafe_set : string -> int -> char -> unit
= "%string_unsafe_set"
external unsafe_blit : string -> int -> string -> int -> int -> unit
= "caml_blit_string" "noalloc"
external unsafe_fill : string -> int -> int -> char -> unit
= "caml_fill_string" "noalloc" end
之后你甚至可以使用M作为String的别名。例如:
# M.concat " " ["one"; "two"; "three"];;
在utop中,打开库(通过~require ...)或打开模块(通过open Module_name
)时,有没有办法获取库或模块的内容? utop 通过完成选项卡提供此功能,但我想一次查看所有功能。
不一定在utop,可以用下面的:
# module type S = module type of Module_of_your_interest;;
module type S =
sig
...
...
end
警告:某些模块的签名非常大。
在utop
中你可以使用#show
命令。例如
utop # #show Stack;;
module Stack :
sig
type 'a t
exception Empty
val create : unit -> 'a t
val push : 'a -> 'a t -> unit
val pop : 'a t -> 'a
val top : 'a t -> 'a
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val is_empty : 'a t -> bool
val length : 'a t -> int
val iter : ('a -> unit) -> 'a t -> unit
end
如果您对库中可用的函数名称感兴趣,您可以写:
#module S = Library_name;;
例如:
#module M = String;;
输出将是:
module M : sig external length : string -> int = "%string_length" external get : string -> int -> char = "%string_safe_get" external set : string -> int -> char -> unit = "%string_safe_set" external create : int -> string = "caml_create_string" val make : int -> char -> string val copy : string -> string val sub : string -> int -> int -> string val fill : string -> int -> int -> char -> unit val blit : string -> int -> string -> int -> int -> unit val concat : string -> string list -> string val iter : (char -> unit) -> string -> unit val iteri : (int -> char -> unit) -> string -> unit val map : (char -> char) -> string -> string val trim : string -> string val escaped : string -> string val index : string -> char -> int val rindex : string -> char -> int val index_from : string -> int -> char -> int val rindex_from : string -> int -> char -> int val contains : string -> char -> bool val contains_from : string -> int -> char -> bool val rcontains_from : string -> int -> char -> bool val uppercase : string -> string val lowercase : string -> string val capitalize : string -> string val uncapitalize : string -> string type t = string val compare : t -> t -> int external unsafe_get : string -> int -> char = "%string_unsafe_get" external unsafe_set : string -> int -> char -> unit = "%string_unsafe_set" external unsafe_blit : string -> int -> string -> int -> int -> unit = "caml_blit_string" "noalloc" external unsafe_fill : string -> int -> int -> char -> unit = "caml_fill_string" "noalloc" end
之后你甚至可以使用M作为String的别名。例如:
# M.concat " " ["one"; "two"; "three"];;