Re: Classe recursive et heritage

From: Wolfgang Lux (lux@pan.uni-muenster.de)
Date: Tue Jun 23 1998 - 13:01:49 MET DST


Message-Id: <199806231101.MAA12573@pan.uni-muenster.de>
To: Emmanuel Engel <Emmanuel.Engel@lri.fr>
Subject: Re: Classe recursive et heritage
Date: Tue, 23 Jun 1998 12:01:49 +0100
From: Wolfgang Lux <lux@pan.uni-muenster.de>

[Sorry, for the answer not being in french, but I'm still better in
reading french than in writing :-(]
> [...]
> Mais cela ne correspond pas a mon besoin puisque les fils gauches et
> droit de cette nouvelle classe ne sont que des arbres non decores. En
> fait il me semble que, ce dont j'ai besoin c'est, dans la premiere
> definition, d'une variable de type (type au sens typage) "self" qui me
> permettrai alors de dire que les fils gauche et droit sont du meme
> type que la classe (soit le point fixe de cette definition). Cela
> donnerai alors
>
> class ('a) tree as 'self (g:'self) (d:'self) =
> val fg = g
> val fd = d
> end;;
>
> class ('a) labelled_tree g d (i:int) =
> inherit ('a)tree g d
> val un_entier = i
> end;;
>
> Dans ce cadre la, le inherit aurait pour consequence de modifer le
> point fixe de la definition pour creer la nouvelle classe
> labelled_tree. Mon probleme est que je n'ai pas trouve comment faire
> en O'caml. Est-ce possible? Si non ou est le probleme ? Le typage

You can simply define this in OCaml as follows (Note that I've also
added accessor methods to the classes):

class 'a tree (g : 'b) (d : 'b) : 'b =
  val fg = g
  val fd = d
  method fg = fg
  method fd = fd
end;;

class 'a labeled_tree g d (i : int) =
  inherit ('a) tree g d
  val un_entier = i
  method label = un_entier
end;;

Regards
Wolfgang Lux

--
Wolfgang Lux				  Phone: +49-251-83-38263
Institut fuer Wirtschaftinformatik	    FAX: +49-251-83-38259
Universitaet Muenster		Email: lux@helios.uni-muenster.de



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:14 MET