maz = { name = "mazohho", point = { x = 10, y = 20 } }
この point を素朴に更新しようとしてもコンパイルエラーとなってしまう。
-- これはできない
new_maz = { maz | point = { maz.point | y = 2 }}
一度 let で一時変数に受けておくと問題ない。
-- これは大丈夫
new_maz =
let maz_point = maz.point
in { maz | point = { maz_point | y = 2 }}
-- こういう手もあるがわかりやすいとは言えない
new_maz = { maz | point = maz.point |> (\n -> { n | x = 2})}