caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Les séquences
@ 2002-02-07 15:47 Diego Olivier Fernandez Pons
  0 siblings, 0 replies; only message in thread
From: Diego Olivier Fernandez Pons @ 2002-02-07 15:47 UTC (permalink / raw)
  To: Caml-list

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-02-07 17:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-02-07 15:47 [Caml-list] Les séquences Diego Olivier Fernandez Pons

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).