Reputation: 54
I have this code:
type seed = {c: Graphics.color option; x : int; y : int };;
type voronoi = {dim : int * int; seeds : seed array};;
let v1 = {dim = 50,50; seeds = [| {c=Some Graphics.red; x=50; y=100}; |]}
when i'm trying this:
v1.seeds.(0).c <- Some Graphics.green;;
i get this error:
The record field c is not mutable
what can i do ?
Upvotes: 1
Views: 585
Reputation: 4441
indeed, c is not mutable.
You should write like this :
v1.seeds.(0) <- {c=Some Graphics.green;x=v1.seeds.(0).x;y=v1.seeds.(0).y};;
Upvotes: 1
Reputation: 15424
Record fields are immutable, unless declared otherwise. The OCaml Reference Manual (sect 1.5) says that
Record fields can also be modified by assignment, provided they are declared
mutable
in the definition of the record type
The following should work:
type seed = {mutable c: Graphics.color option; x : int; y : int }
Upvotes: 3