caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jean-Christophe Filliatre <filliatr@lri.fr>
To: John Skaller <skaller@maxtal.com.au>
Cc: caml-list@inria.fr
Subject: Re: Constructor/reference bug?
Date: Thu, 12 Aug 1999 13:22:59 +0200 (MEST)	[thread overview]
Message-ID: <14258.44691.363797.52662@pc89.lri.fr> (raw)
In-Reply-To: <3.0.6.32.19990811180530.00985e40@mail.triode.net.au>


> | COLON :: t     -> CTRL !lineno :: f t
>
> The code doesn't work as I expected: every
> CTRL value refers to the same lineno, the last one.
> If I change the COLON line to read:

That is only because the second argument is evaluated before the first
one in a cons (::). Indeed, you can try 

======================================================================
# print_int 1 :: print_int 2 :: [];;
======================================================================

and you will get 

======================================================================
21- : unit list = [(); ()]
======================================================================

It explains  your problem. As you  can read it in  the ocaml reference
manual,  the  order  of  evaluation  of tuples  elements  in  the  not
specified :

======================================================================
Products

The expression expr1 ,..., exprn evaluates to the n-tuple of the values of expressions expr1 to exprn. The
evaluation order for the subexpressions is not specified.

Variants

The expression ncconstr expr evaluates to the variant value whose constructor is ncconstr, and whose argument
is the value of expr.
======================================================================

so your second code with a "let in" should be used. 

> | COLON :: t -> let x = !lineno in CTRL x :: f t

Best regards,
-- 
Jean-Christophe FILLIATRE
  mailto:Jean-Christophe.Filliatre@lri.fr
  http://www.lri.fr/~filliatr




  parent reply	other threads:[~1999-08-12 14:42 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-08-11  8:05 John Skaller
1999-08-12 10:51 ` Nicolas Ollinger
1999-08-12 11:22 ` Jean-Christophe Filliatre [this message]
1999-08-12 11:25 ` Andreas Rossberg
1999-08-12 12:16 ` Markus Mottl
1999-08-12 12:05 Damien Doligez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=14258.44691.363797.52662@pc89.lri.fr \
    --to=filliatr@lri.fr \
    --cc=Jean-Christophe.Filliatre@lri.fr \
    --cc=caml-list@inria.fr \
    --cc=skaller@maxtal.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).