3
請:我想檢查模塊的簽名;有沒有這樣做的功能?只是輸入模塊的名稱不起作用:如何檢查ocaml頂層的模塊/簽名?
# List ;;
Error: Unbound constructor List
事實上,我想爲我在交互式頂層定義的模塊做到這一點。
對不起,如果答案很明顯 - 很難搜索到這個!謝謝。
請:我想檢查模塊的簽名;有沒有這樣做的功能?只是輸入模塊的名稱不起作用:如何檢查ocaml頂層的模塊/簽名?
# List ;;
Error: Unbound constructor List
事實上,我想爲我在交互式頂層定義的模塊做到這一點。
對不起,如果答案很明顯 - 很難搜索到這個!謝謝。
標準的伎倆,這是做一個新的模塊同義詞:
# module Mylist = List;;
module Mylist :
sig
val length : 'a list -> int
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
. . .
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val fast_sort : ('a -> 'a -> int) -> 'a list -> 'a list
val merge : ('a -> 'a -> int) -> 'a list -> 'a list -> 'a list
end
#
更新
由於ocaml的4.02這一招不再有效。取而代之的是爲目的的頂層指令:
# #show_module List;;
module List :
sig
val length : 'a list -> int
val hd : 'a list -> 'a
val tl : 'a list -> 'a list
. . .
val sort : ('a -> 'a -> int) -> 'a list -> 'a list
val stable_sort : ('a -> 'a -> int) -> 'a list -> 'a list
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
在OCaml的版本> = 4.02,你現在也可以做到這一點的交互式解釋:
# #show_module List;;
module List :
sig
val length : 'a list -> int
...
end
或者只是使用#show List;;
它曾經是得到這個信息的唯一方法。自OCaml 4.02.0以來,事情是不同的(也是更好的)。 –
(我更新了我的答案。) –