Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Peut on unifier foncteurs et objets ?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Diego Olivier Fernandez Pons <Diego.FERNANDEZ_PONS@e...>
Subject: [Caml-list] Peut on unifier foncteurs et objets ?
    Bonjour,

Il y a régulièrement sur la liste Caml des discussions au sujet des
mérites respectifs des foncteurs par rapport aux objets et des
possibilités d'extensions (méthodes polymorphes, modules de première
classe, etc.)

La redondance entre le système de modules/foncteurs et celui des
objets n'est pas à mon avis tant le problème. Après tout le
programmeur Caml doit déjà se décider entre :
- structures de données éphémères ou persistantes
- boucles ou récursion
- f = fun x y -> ou f x = function ... ->
- if ou match ... with
- fonctions récursives à plusieurs arguments ou application partielle
(ex. map)
- types somme ou variantes polymorphes
- types somme ou enregistrements
- etc.

Ce qui est nettement plus ennuyeux quand on passe du premier jet de
code (sous forme de module) à un foncteur, puis on change pour un
objet (pensant utile de changer son comportement à l'exécution), puis
on revient au foncteur (car non, c'est mieux d'abstraire), etc. c'est
qu'on a _vraiment_ l'impression de ne faire que du copier/coller.

Mes foncteurs c'est mon module initial dans lequel j'ai remplacé
'compare' par 'M.compare', mes objets c'est mon module initial auquel
j'ai ajouté une capsule ne contenant que des 'method f = {< obj = f
obj >}'

Je ne connais certainement pas grand chose aux questions de typage, de
compilation ou d'abstraction mais je me demande bien pourquoi Caml ne
peut il pas faire le gros du copier/coller à ma place en offrant une
notion plus ou moins unifiée (avec un simple mot cle pour changer le
comportement désiré ou quelque chose du genre).


        Diego Olivier


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners