请:我想检查模块的签名;有这个功能吗?只输入模块名称不起作用:
# List ;;
Error: Unbound constructor List
事实上,我想为我在交互式顶层定义的模块执行此操作。
很抱歉,如果答案很明显 - 很难搜索到这个!感谢。
答案 0 :(得分:9)
标准技巧是创建一个新的模块同义词:
# 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
答案 1 :(得分:4)
在OCaml版本&gt; = 4.02中,您现在也可以在交互式解释器中执行此操作:
# #show_module List;;
module List :
sig
val length : 'a list -> int
...
end
或者只使用#show List;;