Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 1997-06-03 (15:14)
From: Jean-Christophe Filliatre <Jean-Christophe.Filliatre@e...>
Subject: Re: sequencing

>    Quelqu'un pourrait-il m'expliquer pourquoi le sequencement d'une fonction
> a` effet de bord, telle que "print_string" par exemple, semble inverse'
> quand elle est appliquée sur une liste au moyen d'un iterateur.

Ce comportement   est du au  fait que,    lors d'une application,  les
arguments sont évalués de droite à gauche, comme le montre l'exemple

	# (fun _ _ -> ()) (print_string "toto") (print_string "tata");;
	tatatoto- : unit = ()

Dans  ton  exemple, le comportement est   du au  fait  que le deuxième
argument du  cons (l'appel  récursif)  est évalué avant  le premier (f

Cependant,  le manuel de référence indique,  page 64, que : "The order
in which  the   expressions expr1,...,exprn   are  evaluated  is   not
specified."  En   conséquence,  il  vaut    mieux expliciter   l'ordre
d'évaluation en utilisant le séquencement avec ;.

Jean-Christophe FILLIATRE
  WWW  :

> **********************************************
> ££  English version  ££
> I don't understand why the sequencing of side effects seems to be inverted,
> when using "map" , like for example in the following:

This behavior is due to the order of evaluation of the arguments in an
application,  which is from   right  to left,  as illustrated   by the
following example :

	# (fun _ _ -> ()) (print_string "toto") (print_string "tata");;
	tatatoto- : unit = ()

However, the reference manual indicates,  page 64, that: "The order in
which the expressions expr1,...,exprn are evaluated is not specified."
Consequently, it is   better   to explicitly   specify the order    of
evaluation using a sequence (;).

Jean-Christophe FILLIATRE
  WWW  :