如何在交互式Ocaml中获取类型信息?

时间:2013-01-12 07:33:55

标签: ocaml

我正在使用版本4的Ocaml。当我以交互方式定义某种类型时,解释器会在此之后立即打印出该类型的字符串表示形式:

# type foo = Yes | No;;         <-- This is what I entered
type foo = Yes | No             <-- This is what interpreter bounced

但是在我输入更多定义之后,有时我想再次看到该类型的文本表示。

在Haskell中,我可以输入“:t foo”。

我如何在Ocaml中执行此操作?

2 个答案:

答案 0 :(得分:12)

在utop中,您可以使用#typeof指令:

#typeof "list";;
type 'a list = [] | :: of 'a * 'a list 

您可以将值和类型放在双引号中:

let t = [`Hello, `World];;
#typeof "t";;
val t : ([> `Hello ] * [> `World ]) list   

P.S。甚至更好的解决方案是使用merlin。

答案 1 :(得分:2)

据我所知,Ocaml实际上没有办法以字符串形式检索类型信息

您必须为每种类型

构建模式匹配
type foo = Yes | No;;

let getType = function
  |Yes -> "Yes"
  |No -> "No"    
  ;;

let a = Yes;;
print_string (getType a);;