From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id RAA00724 for caml-redistribution; Tue, 23 Jun 1998 17:44:47 +0200 (MET DST) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id MAA32536 for ; Tue, 23 Jun 1998 12:04:44 +0200 (MET DST) Received: from mail.uni-muenster.de (MAIL.UNI-MUENSTER.DE [128.176.188.76]) by nez-perce.inria.fr (8.8.7/8.8.7) with ESMTP id MAA20099 for ; Tue, 23 Jun 1998 12:04:43 +0200 (MET DST) Received: from helios.uni-muenster.de (HELIOS.UNI-MUENSTER.DE [128.176.158.86]) by mail.uni-muenster.de (8.8.7/8.8.7) with SMTP id MAA37010; Tue, 23 Jun 1998 12:04:37 +0200 Received: from pan.uni-muenster.de by helios.uni-muenster.de (SMI-8.6/SMI-SVR4) id MAA11323; Tue, 23 Jun 1998 12:01:12 +0100 Received: from pan by pan.uni-muenster.de (SMI-8.6/SMI-SVR4) id MAA12573; Tue, 23 Jun 1998 12:01:49 +0100 Message-Id: <199806231101.MAA12573@pan.uni-muenster.de> X-Mailer: exmh version 1.6.9 8/22/96 To: Emmanuel Engel cc: caml-list@inria.fr Subject: Re: Classe recursive et heritage In-reply-to: (Your message of Sun, 21 Jun 1998 16:05:37 +0200.) <358D1330.89DB13F9@lri.fr> References: <358D1330.89DB13F9@lri.fr> Reply-to: lux@helios.uni-muenster.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 23 Jun 1998 12:01:49 +0100 From: Wolfgang Lux Sender: weis [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