如何获得类型信息交互ocaml的?(How to get type information in i

2019-07-18 03:32发布

我使用的版本4 Ocaml程序编写。当我定义交互某种类型,解释器打印出之后立即类型的字符串表示:

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

但经过我键入多个定义,有时候我希望再次看到该类型的文本表示。

在Haskell,我可以输入“:T富”。

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

Answer 1:

在UTOP你可以使用#typeof指令:

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

你可以把双引号中值和类型:

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

PS甚至更好的解决办法是使用梅林。



Answer 2:

据我所知,实际上是在ocaml的没有办法取回一个字符串形式下类型信息

你必须建立每个类型的匹配模式

type foo = Yes | No;;

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

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


文章来源: How to get type information in interactive Ocaml?
标签: ocaml