2013-12-13 74 views

回答

6

這個標準的技巧是爲模塊定義一個同義詞,它引發了頂層列表界面。

$ ocaml 
     OCaml version 4.00.1 

# #load "str.cma";; 
# module S = Str;; 
module S : 
    sig 
    type regexp = Str.regexp 
    val regexp : string -> regexp 
    val regexp_case_fold : string -> regexp 
    val quote : string -> string 
    val regexp_string : string -> regexp 
    val regexp_string_case_fold : string -> regexp 
    val string_match : regexp -> string -> int -> bool 
    . . . 
    val first_chars : string -> int -> string 
    val last_chars : string -> int -> string 
    end 
+0

真棒的想法,在ocaml的羞辱,因爲它不可能以非hacky的方式。謝謝! – mkf

+0

我認爲這個特性應該由OCaml的IDE提供,而不是由OCaml編譯器提供。所以沒有恥辱OCaml :-) –

+0

我的意思是交互式控制檯爲OCaml :)這似乎是你所說的IDE :) – mkf

1

在OCaml的頂層版本4.04.0,定義模塊的同義詞的伎倆在沒有更多:

# module L = List;; 
module L = List 
# 

,但你可以使用include指令:

# module L = struct include List end;; 
module L : 
    sig 
    val length : 'a list -> int 
    val cons : 'a -> 'a list -> 'a list 
    val hd : 'a list -> 'a 
    val tl : 'a list -> 'a list 
    val nth : 'a list -> int -> 'a 
    val rev : 'a list -> 'a list 
... 
    val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list 
    val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list 
    end 
# 
+1

你可以直接使用#show指令:#show List ;; – ghilesZ

3

兩個utop and ocaml interpreters added the #show指令自一刻起。它不正是你想要的,如下面的例子:

│ Welcome to utop version 1.19.3 (using OCaml version 4.04.0) │   
    └──────────────────────────────────────────────────────────────┘   

Type #utop_help for help about using utop. 

─(15:12:33)─< command 0 >──────────────────────────────────────{ counter: 0 }─ 
utop # #show List;; 
module List :                  
sig                    
    val length : 'a list -> int             
    val cons : 'a -> 'a list -> 'a list 
    val hd : 'a list -> 'a 
    ... 
    val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list 
    val sort_uniq : ('a -> 'a -> int) -> 'a list -> 'a list 
    val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list 
end 

PS:我使用4.04版本,但我知道,這也適用於4.03>和之前也許太。