Is there a way to list all functions of a module in utop?
Asked Answered
B

3

10

In utop, when opening a library (via ~require ...) or when opening a module (via open Module_name), is there a way to get the content of the library or module? utop offers this by completion tabs, but I would like to see all the functions at once.

Badr answered 19/11, 2015 at 5:58 Comment(0)
F
9

In utop you can use the #show command. For example

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
Freed answered 19/11, 2015 at 7:36 Comment(1)
For completeness: in ocaml toplevel, this would be #show_module Stack;;Imprinting
L
7

Not necessarily in utop, you can use the following:

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

Warning: some modules have really big signatures.

Lafleur answered 19/11, 2015 at 6:38 Comment(1)
How can I get the "docstring" of a function? Say I want to know hat Stack.pop does?Horrendous
L
-1

If you are interested in function names available in the library you can write:

#module S = Library_name;;

for example:

#module M = String;;

The output will be:

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

After that you can even use M as an alias of String. e.g:

# M.concat " " ["one"; "two"; "three"];;
Lannie answered 9/6, 2017 at 12:38 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.