caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Order of evaluation when constructing record values
@ 2007-08-11 17:56 Jeff Meister
  2007-08-11 18:15 ` Jeff Meister
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Jeff Meister @ 2007-08-11 17:56 UTC (permalink / raw)
  To: caml-list

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.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-08-14  0:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-11 17:56 Order of evaluation when constructing record values Jeff Meister
2007-08-11 18:15 ` Jeff Meister
2007-08-11 22:13   ` [Caml-list] " Jon Harrop
2007-08-12  8:25   ` Till Varoquaux
2007-08-12  9:12 ` [Caml-list] " David Allsopp
2007-08-13  0:25 ` Jacques Garrigue

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).