Browse thread
Order of evaluation when constructing record values
- Jeff Meister
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Jeff Meister <nanaki@g...> |
| Subject: | Order of evaluation when constructing record values |
I ask for forgiveness in advance for this silly pedantic question.
I think my question is best illustrated with an example. Say I have
this simple record type for holding a date:
type date = { year : int; month : int; day : int; }
Now, I want to read the year/month/day values from stdin, and I know
they will appear in that order. So I do the following:
let today = {
year = read_int ();
month = read_int ();
day = read_int ();
}
For this to work, I need the ints to be read in the order given, or I
could end up with a day of 2007 and a year of 11. Is there any
guarantee that OCaml will follow that order of evaluation when
constructing the record? Or do I have to force it with let-bindings
like this:
let today =
let y = read_int () in
let m = read_int () in
let d = read_int () in
{ year = y; month = m; day = d; }
Of course, it's not that big a deal for me to just use the let-binding
method, but I'm curious, and it might make my code look nicer if I can
rely on order of evaluation.