From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id RAA02440 for caml-redistribution; Tue, 3 Jun 1997 17:14:07 +0200 (MET DST) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id NAA29911 for ; Tue, 3 Jun 1997 13:14:05 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.8.5/8.7.3) with ESMTP id NAA09705; Tue, 3 Jun 1997 13:14:01 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by pauillac.inria.fr (8.7.6/8.7.3) with SMTP id NAA29905; Tue, 3 Jun 1997 13:14:00 +0200 (MET DST) Message-Id: <199706031114.NAA29905@pauillac.inria.fr> X-Authentication-Warning: pauillac.inria.fr: Host localhost [127.0.0.1] didn't use HELO protocol X-Mailer: exmh version 1.6.4 10/10/95 To: Jean.Luc.Paillet@lim.univ-mrs.fr cc: caml-list@inria.fr Subject: Re: sequencing In-reply-to: Your message of "Tue, 03 Jun 1997 10:04:55 BST." <9706030959.AA15419@gyptis.univ-mrs.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Tue, 03 Jun 1997 13:14:00 +0200 From: Francois Pessaux Sender: weis > Quelqu'un pourrait-il m'expliquer pourquoi le sequencement d'une fon= ction > 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. Il se trouve que l'ordre d'evaluation (droite-gauche ou gauche-droite) n'= est pas specifie pour le compilo Caml. Autrement dit, il ne faut pas compter = sur un ordre particulier pour faire un programme correct. Sur la version de C= aml que tu utilise l'evaluation doit vraissemblablement se faire de droite a gauche et la fonction map doit etre definie comme : let rec map f = function | [] -> [] | h :: q -> (f h) :: (map f q) ;; Pour patcher ca, et ne plus etre dependant de l'ordre d'evaluation, il fa= ut effectuer explicitement le calcul de f h en premier : let rec map f = function [] -> [] | h :: q -> let r = f a in r :: map f q ;; C'est d'ailleurs comme ca qu'est codee map en Objective Caml. -- = (* Francois PESSAUX (Francois.Pessaux@inria.fr) *) (* INRIA Rocquencourt - Projet CRISTAL *) (* (http://pauillac.inria.fr/~pessaux) *) ;;