如何查询变量的类型类?

gab*_*les 3 ocaml reason bucklescript

我正在尝试学习 ReasonML,并且我正在做一些公案来帮助我完成这项任务。我尝试编写的公案之一是在将列表转换为数组后询问列表的类型。我知道在某些语言中存在诸如 Haskell ( :t) 之类的运算符,我们可以在其中询问变量的类型。是否有任何相当于:tReasonML 的东西?或者检查是否Array.of_list返回数组是没有意义的,因为编译器确保......

Ric*_*nne 5

我不太了解 Reason,但是utop(改进的 OCaml REPL)提供了#typeof检查表达式类型的指令:

let a = 42;;
val a : int = 42

#typeof "a";;
val a : int
Run Code Online (Sandbox Code Playgroud)

请注意,这只是一个 REPL 工具。在 OCaml 中,类型在运行时不可用:它们在编译期间被剥离。您可以在此处了解有关 OCaml 编译过程的更多信息。


正如@Rizo在评论中指出的那样,还有一个#show指令,它甚至可以在标准 OCaml REPL 中使用:

let a = 43;;
val a : int = 43

#show a;;
val a : int
Run Code Online (Sandbox Code Playgroud)

  • 另一种选择是使用`#show <identifier>`。这将显示值的类型、类型定义甚至模块或接口签名。 (3认同)