Интересно, возможно ли в 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
не будет изменяемым и за один раз.