Ответ 1
Это иногда называется "обновление записи" или "функциональное обновление" или что-то в этом роде. Он оценивает новую запись того же типа, что и X, и поля которой инициализируются так же, как и в X, за исключением тех, которые перечислены после "с", которые инициализируются этими заданными значениями.
Он полезен для неизменяемых записей, как удобный способ взять такую запись и изменить одну или две вещи на ней (которые на императивном языке, как правило, будут мутировать поля), не перечисляя все поля, которые не изменяются.
Это описано в руководстве OCaml раздел 6.7.3, прокрутите вниз до "Записи", второй абзац.
Для тех, кто знаком с Haskell, синтаксис OCaml
{ expr with field1 = expr1 ; ... ; fieldn = exprn }
совпадает с синтаксисом Haskell
expr { field1 = expr1 , ... , fieldn = exprn }