OCaml:获取值的类型名称

Sla*_*lav 3 ocaml

是否可以在OCaml中打印值的名称,例如,如果我有

type my_type =
  | MyType_First of int
  | MyType_Second of string
Run Code Online (Sandbox Code Playgroud)

然后做类似的事情:

let my_value = MyType_First 0 in
print_string ("my_value is of type " ^ String.from_type my_value ^ ".\n";
Run Code Online (Sandbox Code Playgroud)

我可以得到"my_value属于MyType_First类型".?

谢谢.

Sté*_*nez 8

单形解:

let from_type = function
  | MyType_First _ -> "MyType_First"
  | MyType_Second _ -> "MyType_Second"
Run Code Online (Sandbox Code Playgroud)

多态解:无.(AFAIK,对应于构造函数的词法标记不会记录在字节码/二进制文件中,即使指定了调试标志.唯一可以做的就是使用一些黑暗打印构造函数的整数'标识符' Obj.magic.)