这个ocaml语法是什么意思?

时间:2016-12-07 11:47:05

标签: syntax ocaml ml

type 'k leaf = {a_bb : 'k -> string;}

我无法理解ocaml中这行代码的含义。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

它在类型变量leaf上声明了一个新类型'k,它是一个记录类型,其中一个字段a_bb的类型为'k -> string,其中'k为我们之前提到的参数。

类型'k leaf的值的示例是:

{ a_bb = fun _ -> "Hello World!" }

'k也可以专门用于具体类型,例如

{ a_bb = fun b -> if b then "Hello World!" else "Argh!" }

的类型为bool leaf,因为字段a_bb中函数的参数必须是表达式if b then (...)的布尔值才有意义。

您可以使用如下投影访问字段a_bb中的函数:

fun v -> v.a_bb