我想知道在OCaml中是否可以使用同一个记录中的一个字段来引用另一个字段。
基本上,我有一个带有函数的字段,我也想在其中使用同一记录中的其他值字段,以便当值发生更改时,该函数将使用新值。
我可以通过将函数字段设置为 mutable
并在创建记录后更新它来实现。
type 'a cell =
{ mutable value: 'a
; mutable fn: unit -> 'a }
let create_cell ~(value : 'a) : 'a cell =
let c = {value; fn= (fun () -> value + 42)} in
let _ = c.fn <- (fun () -> c.value + 42) in
c
我在想是否可能在不改变
fn
字段的可变性的情况下一次完成。