From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA10797; Thu, 7 Feb 2002 18:55:33 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id SAA11465 for caml-list@pauillac.inria.fr; Thu, 7 Feb 2002 18:55:32 +0100 (MET) 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 QAA07737 for ; Thu, 7 Feb 2002 16:52:06 +0100 (MET) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g17Fq6v25646 for ; Thu, 7 Feb 2002 16:52:06 +0100 (MET) Received: from ibm3.cicrp.jussieu.fr (ibm3.cicrp.jussieu.fr [134.157.15.3]) by shiva.jussieu.fr (8.12.1/jtpda-5.4) with ESMTP id g17Fq5YD017083 for ; Thu, 7 Feb 2002 16:52:05 +0100 (CET) Received: from ibm1.cicrp.jussieu.fr (ibm1.cicrp.jussieu.fr [134.157.15.1]) by ibm3.cicrp.jussieu.fr (8.8.8/jtpda/mob-V8) with ESMTP id QAA23756 for ; Thu, 7 Feb 2002 16:53:16 +0100 Received: from localhost (fernande@localhost) by ibm1.cicrp.jussieu.fr (8.8.8/jtpda/mob-v8) with SMTP id QAA177466 for ; Thu, 7 Feb 2002 16:47:20 +0100 Date: Thu, 7 Feb 2002 16:47:19 +0100 (NFT) From: Diego Olivier Fernandez Pons To: Caml-list@inria.fr Subject: [Caml-list] =?iso-8859-1?Q?Les_s=E9quences?= Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On a pu lire dans certains messages concernant la syntaxe de Caml des remarques concernant les s=E9quences (let ... in let ... in ...) > let foo =3D bar in > let baz =3D quux in > let fnord =3D fnarp in > ... contre=20 > let* foo =3D bar; > baz =3D quux; > fnord =3D fnarp;=20 > in > (Possibly even without the "in", it is also ugly.) Supposons que l'on veuille calculer z =3D x * x + y * y La s=E9quence force l'ordre d'=E9valuation des termes, par exemple =09let carreX =3D x * x in =09let carreY =3D y * y in =09let z =3D carreX + carreY calculera d'abord carreX puis carreY, enfin z (carreX -> carreY -> z)=20 Il n'existe cependant aucune raison logique d'adopter cet ordre plut=F4t que l'ordre inverse (carreY -> carreX -> z) car il n'existe aucune d=E9pendance entre le calcul de carreX et celui de carreY. Raison pour laquelle, il vaut mieux laisser l'impl=E9mentation libre de choisir l'ordre qui lui convient =09let =09 carreX =3D x * x and =09 carreY =3D y * y =09in =09 z =3D carreX + carreY Supposons en effet que le calcul de carreX et carreY soit un tant soit plus complexe. Si les relations de d=E9pendance dans votre code sont correctement explicit=E9es, un compilateur sur une machine multiprocesseurs pourrait =E0 moindres frais lancer les deux calculs ind=E9pendamment. Par contre, la parall=E9lisation automatique d'un code quelconque devient autrement plus ardue.=20 L'inconv=E9nient est que ce type de code aboutit =E0 un graphe acyclique, or notre format habituel est le fichier texte, lui purement s=E9quentiel. L'empilement de s=E9quences et de "tranches" (let ... and =2E.. in) devenant tr=E8s vite illisible, ce mode de programmation est en l'absence d'un environnement de programmation visuelle =E0 adopter avec pr=E9caution.=20 Une chose est s=FBre, la syntaxe Caml a le m=E9rite de permettre d'expliciter les d=E9pendances logiques entre les calculs ce qui n'est pas le cas d'autres langages ou de syntaxes alternatives que nous avons pu voir propos=E9es sur cette liste. =09Diego Olivier ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr