Browse thread
[Caml-list] Les_séquences
- Diego Olivier Fernandez Pons
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Diego Olivier Fernandez Pons <Diego-Olivier.FERNANDEZ-PONS@c...> |
| Subject: | [Caml-list] Les_séquences |
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