OCaml 记录访问自身
OCaml record accessing itself
我正在阅读定义了大量记录的 OCaml 代码。这些记录定义了交互式命令行工具的功能。
这些记录的类型是:
{
name : string ;
help : string ;
run : string list -> unit
}
其中 name
是命令的名称,help
是函数的一小行帮助,run
是接受参数并计算结果的函数。
我想在 run
函数中使用 name
字段。有没有办法做到这一点?像 self.name
?
这样的东西
该工具必须支持 OCaml>4.00.1
。
谢谢
是的,可以用rec
关键字递归定义一条记录,大致上只要保证所有字段不涉及任意计算即可。以下作品:
type t = {
name : string;
help : string ;
run : string list -> unit
}
let run x l =
print_endline x.name
let rec x = {
name = "a";
help = "b";
run = (fun l -> run x l);
}
但是,这不起作用:
let rec x = {
name = "a";
help = "b";
run = (run x);
}
我正在阅读定义了大量记录的 OCaml 代码。这些记录定义了交互式命令行工具的功能。
这些记录的类型是:
{
name : string ;
help : string ;
run : string list -> unit
}
其中 name
是命令的名称,help
是函数的一小行帮助,run
是接受参数并计算结果的函数。
我想在 run
函数中使用 name
字段。有没有办法做到这一点?像 self.name
?
该工具必须支持 OCaml>4.00.1
。
谢谢
是的,可以用rec
关键字递归定义一条记录,大致上只要保证所有字段不涉及任意计算即可。以下作品:
type t = {
name : string;
help : string ;
run : string list -> unit
}
let run x l =
print_endline x.name
let rec x = {
name = "a";
help = "b";
run = (fun l -> run x l);
}
但是,这不起作用:
let rec x = {
name = "a";
help = "b";
run = (run x);
}