From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 928F2BBC1 for ; Fri, 11 Apr 2008 09:52:16 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAMu0/kfAXQIm/2dsb2JhbACrAA X-IronPort-AV: E=Sophos;i="4.25,640,1199660400"; d="scan'208";a="24875123" Received: from discorde.inria.fr ([192.93.2.38]) by mail4-smtp-sop.national.inria.fr with ESMTP; 11 Apr 2008 09:52:16 +0200 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id m3B7qFWx028826 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 11 Apr 2008 09:52:16 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArkEAEK1/keBrw8EWGdsb2JhbACRRQEbmR4 X-IronPort-AV: E=Sophos;i="4.25,640,1199660400"; d="scan'208";a="11333310" Received: from ext.lri.fr ([129.175.15.4]) by mail3-smtp-sop.national.inria.fr with ESMTP; 11 Apr 2008 09:52:15 +0200 Received: from localhost (localhost [127.0.0.1]) by ext.lri.fr (Postfix) with ESMTP id ACD9DA4405; Fri, 11 Apr 2008 09:52:15 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at lri.fr Received: from ext.lri.fr ([127.0.0.1]) by localhost (ext.lri.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vy3DNLxamlKj; Fri, 11 Apr 2008 09:52:06 +0200 (CEST) Received: from smtp.lri.fr (vhost3-23 [129.175.3.23]) by ext.lri.fr (Postfix) with ESMTP id 80A5DA42B1; Fri, 11 Apr 2008 09:52:06 +0200 (CEST) Received: from serveur9-10.lri.fr (serveur9-10 [129.175.9.10]) by smtp.lri.fr (Postfix) with ESMTP id 7535CE0539; Fri, 11 Apr 2008 09:52:06 +0200 (CEST) Received: from localhost ([127.0.0.1] ident=signoles) by serveur9-10.lri.fr with esmtp (Exim 3.36 #1 (Debian)) id 1JkE3K-00047R-00; Fri, 11 Apr 2008 09:52:06 +0200 Date: Fri, 11 Apr 2008 09:52:06 +0200 (CEST) From: Julien Signoles To: Andrej Bauer Cc: Jacques Le Normand , caml-list@inria.fr Subject: Re: [Caml-list] using functors in objects In-Reply-To: <47FE02A3.2030503@andrej.com> Message-ID: References: <47FE02A3.2030503@andrej.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Miltered: at discorde with ID 47FF18AF.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; signoles:01 signoles:01 lri:01 functors:01 recursive:01 andrej:01 sig:01 struct:01 val:01 sig:01 val:01 struct:01 recursive:01 initialized:01 ocamlc:01 > Perhaps something like this with recursive modules. I have a feeling it > can be simplified, though. > > Andrej > > -------------------- > module A (X: sig type t end) = > struct > class c = > object > val b = (None : X.t option) > end > end > > module rec D : sig > class d : object val b : D.d option end > end = > struct > class d = > object > inherit Y.c > end > end > > and Y : > sig > class c : object val b : D.d option end > end = > A(struct type t = D.d end) > > class d = D.d > > ---------------- it doesn't work because the recursive modules cannot be safely initialized in such a case: $ ocamlc -v The Objective Caml compiler, version 3.10.1 Standard library directory: /home/jsignole/local/godi/lib/ocaml/std-lib $ ocamlc -o modclass modclass.ml $ ./modclass Fatal error: exception Undefined_recursive_module("modclass.ml", 23, 2) Yet I haven't a good solution for such a think :-(. -- Julien