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