具有嵌套记录

时间:2017-09-24 22:24:51

标签: ocaml

有没有办法,可能使用ppx扩展或类似的方法,将功能更新语法{ record with key = value }与嵌套记录一起使用?

例如,在下面的示例程序中,我只在功能上更新最外面的记录,当我真的想要定位"内部"之一。

type outer = {
  a : float;
  b : inner
}
and inner = {
  c : float;
}

let item = { a = 0.4; b = { c = 0.7 } }

let () = ignore { item with b = { c = 0.8 }

如果inner有多个字段,则会变得不那么方便。

我希望能够编写如下内容(草编语法):

let () = ignore { item with b.c = 0.8 }

1 个答案:

答案 0 :(得分:1)

你可以直接用OCaml写这个:

{ item with b = { item.b with c = 0.8 } }

我假设您仅仅为了示例而使用ignore;忽略功能记录更新的结果是没有意义的。