8

在 utop 中,当打开一个库(通过 ~require ...)或打开一个模块(通过打开 Module_name)时,有没有办法获取库或模块的内容?utop 通过完成选项卡提供此功能,但我想一次查看所有功能。

4

3 回答 3

7

不一定在 utop 中,您可以使用以下内容:

# module type S = module type of Module_of_your_interest;;
module type S =
  sig
    ...
    ...
  end

警告:有些模块有很大的签名。

于 2015-11-19T06:38:24.973 回答
7

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
于 2015-11-19T07:36:46.233 回答
0

如果您对库中可用的函数名称感兴趣,可以编写:

#module S = Library_name;;

例如:

#module M = String;;

输出将是:

模块 M : sig 外部长度 : 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 大写: 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" 外部 unsafe_set : 字符串 -> 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" 结束

之后,您甚至可以使用 M 作为 String 的别名。例如:

# M.concat " " ["one"; "two"; "three"];;
于 2017-06-09T12:38:32.873 回答