english version

COCA-ML

coca-ml est une extension syntaxique du langage ocaml 3-02 utilisant camlp4 3.02 qui autorise le "down cast" des objets entre classes qui sont en relation de sous-typage et en relation d'heritage.

Attention il y avait un bug dans la version 0.1c (voir recentes modifications). Pour le corriger la nouvelle version 0.1d contient plusieurs changements importants.

L'idee principale est d'autoriser l'"upcast" seulement à un niveau dans l'arbre d'heritage pour verifier le sous-typage.


Description

Cette extension introduit trois nouvelles constructions syntaxiques :
"instance of" "upcast" "downcast"
Syntax expr instanceof c upcast var from c1 to c2 downcast var from c1 to c2
Typing bool c2 c2
Evaluation true ou false valeur de var valeur de var

Semantique et implantation

o instanceof c1
semantique implantation
1. o "est-un" c1 ( Cast.check loc o key_c1)

upcast o from c1 to c2
semantique implantation
1. o est exactement une instance de c1

et c1 herite directement de c2

Cast.check_sonof var c1 c2
2. type de var est un sous-type de c2 ( var :> c2)

1/ est au niveau de l'execution
2/ est au niveau du typage

downcast o from c1 to c2
semantique implantation
1. o has type c1 ( o : c1)
2. c2 is a sub-type of c1 ( c2 :> c1)
3. o "is-a" c1 ( Cast.check loc o key_c1)
4. o "is-a" c2 ( Cast.check loc o key_c2)
5. ((Obj.magic o) : c2)

1/ et 2/ sont au niveau du typage
3/ et 4/ sont au niveau de l'execution


Exemples

Il y a des exemples plus complets dans la distribution.

Recentes modifications


Distribution

distribution : cocaml-0.1d.tar

O'Caml 3.02 camlp4 3.02


Mise à jour : 28 septembre 2001