用 Reason 显示类型和值

Displaying type and value with Reason

OCaml REPL 显示任何表达式的值和类型。例如,评估:

let rec map f = function
    | [] -> []
    | x::l -> f x :: map f l;;

给出:

val map : ('a -> 'b) -> 'a list -> 'b list = <fun>

这对于语言教学来说毫无价值。

我正在考虑切换到 Reason,但是您将如何获得相同的信息?

let rec map = (f) =>
  fun
  | [] => []
  | [x, ...l] => [f(x), ...map(f, l)];

Try Reason不显示任何类型,我不确定是否存在 Reason 的 REPL。

rtopreason-cli 附带的顶级(OCaml 术语中的 REPL),它实际上只是 utop 的薄包装。它会打印这样的类型:

let map: (('a) => 'b, list('a)) => list('b) = <fun>;

在 VSCode 中,merlin 还会在每个绑定上方显示的 "CodeLens" 中为您提供 let 绑定的类型。