caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Diego Olivier Fernandez Pons <Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr>
To: Caml-list@inria.fr
Subject: [Caml-list] Les séquences
Date: Thu, 7 Feb 2002 16:47:19 +0100 (NFT)	[thread overview]
Message-ID: <Pine.A32.3.95.1020207161214.117690A-100000@ibm1.cicrp.jussieu.fr> (raw)

On a pu lire dans certains messages concernant la syntaxe de Caml des
remarques concernant les séquences (let ... in let ... in ...)

> let foo = bar in
>   let baz = quux in
>     let fnord = fnarp in
>       ...

contre 

> let* foo = bar;
>      baz = quux;
>      fnord = fnarp; 
> in
> (Possibly even without the "in", it is also ugly.)

Supposons que l'on veuille calculer z = x * x + y * y

La séquence force l'ordre d'évaluation des termes, par exemple

	let carreX = x * x in
	let carreY = y * y in
	let z = carreX + carreY

calculera d'abord carreX puis carreY, enfin z (carreX -> carreY -> z) 

Il n'existe cependant aucune raison logique d'adopter cet ordre plutôt
que l'ordre inverse (carreY -> carreX -> z) car il n'existe aucune
dépendance entre le calcul de carreX et celui de carreY.

Raison pour laquelle, il vaut mieux laisser l'implémentation libre de
choisir l'ordre qui lui convient

	let
	    carreX = x * x and
	    carreY = y * y
	in
	    z = carreX + carreY

Supposons en effet que le calcul de carreX et carreY soit un tant soit
plus complexe. Si les relations de dépendance dans votre code sont
correctement explicitées, un compilateur sur une machine
multiprocesseurs pourrait à moindres frais lancer les deux calculs
indépendamment. Par contre, la parallélisation automatique d'un code
quelconque devient autrement plus ardue. 

L'inconvénient est que ce type de code aboutit à un graphe acyclique,
or notre format habituel est le fichier texte, lui purement
séquentiel. L'empilement de séquences et de "tranches" (let ... and
... in) devenant très vite illisible, ce mode de programmation est en
l'absence d'un environnement de programmation visuelle à adopter avec
précaution. 

Une chose est sûre, la syntaxe Caml a le mérite de permettre
d'expliciter les dépendances logiques entre les calculs ce qui n'est
pas le cas d'autres langages ou de syntaxes alternatives que nous
avons pu voir proposées sur cette liste.

	Diego 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


                 reply	other threads:[~2002-02-07 17:55 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=Pine.A32.3.95.1020207161214.117690A-100000@ibm1.cicrp.jussieu.fr \
    --to=diego-olivier.fernandez-pons@cicrp.jussieu.fr \
    --cc=Caml-list@inria.fr \
    /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).