type 'k leaf = {a_bb : 'k -> string;}
Run Code Online (Sandbox Code Playgroud)
我无法理解ocaml中这行代码的含义.有人可以帮忙吗?
它声明leaf了一个在类型变量上'k进行参数化的新类型,它是一个记录类型,其中一个字段a_bb类型'k -> string,其中'k是我们之前提到的参数.
类型值的示例'k leaf是:
{ a_bb = fun _ -> "Hello World!" }
Run Code Online (Sandbox Code Playgroud)
但'k也可以专门用于具体类型,例如
{ a_bb = fun b -> if b then "Hello World!" else "Argh!" }
Run Code Online (Sandbox Code Playgroud)
具有类型,bool leaf因为字段中函数的参数必须a_bb是表达式的布尔值才有if b then (...)意义.
您可以a_bb使用如下投影访问该字段中的函数:
fun v -> v.a_bb
Run Code Online (Sandbox Code Playgroud)