21

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

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

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

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

我怎样才能在 Ocaml 中做到这一点?

4

2 回答 2

15

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

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

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

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

PS 甚至更好的解决方案是使用 merlin。

于 2014-05-05T13:24:41.847 回答
2

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

您必须为每种类型构建模式匹配

type foo = Yes | No;;

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

let a = Yes;;
print_string (getType a);;
于 2013-01-15T13:07:54.087 回答