Surikator
Surikator

Reputation: 1463

Copying fields in OCaml

I have a very basic question regarding OCaml records. Suppose I have a record defined:

type r = {a: int; b: int; c: int}
let x = {a=3; b=8; c=2}

Now, suppose I want to create a new record which has all fields equal to x but which has c=4. I could write:

let y = {a=3; b=8; c=4}

but this is annoying because there's not need to re-write a=3 and b=8. I could also write:

let y = {a=x.a; b=x.b; c=4}

but this is still not good if the record has many fields. Is there any way of writing something like:

let y = {x with c=4}

or something of the sort?

Upvotes: 8

Views: 2171

Answers (1)

nlucaroni
nlucaroni

Reputation: 47944

yeah, and that's the exact syntax.

let y = {x with c=4}

Upvotes: 16

Related Questions