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=AWL autolearn=disabled version=3.1.3 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 1AAB8BBCA for ; Fri, 4 Apr 2008 14:43:04 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAKu/9UfAXQIn/2dsb2JhbACrag X-IronPort-AV: E=Sophos;i="4.25,604,1199660400"; d="scan'208";a="9194579" Received: from concorde.inria.fr ([192.93.2.39]) by mail2-smtp-roc.national.inria.fr with ESMTP; 04 Apr 2008 14:42:58 +0200 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id m34Cgib6028493 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 4 Apr 2008 14:42:58 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtkEALq+9UeBrw8EWGdsb2JhbACRQgEbJ5lm X-IronPort-AV: E=Sophos;i="4.25,604,1199660400"; d="scan'208";a="11071736" Received: from ext.lri.fr ([129.175.15.4]) by mail3-smtp-sop.national.inria.fr with ESMTP; 04 Apr 2008 14:42:58 +0200 Received: from localhost (localhost [127.0.0.1]) by ext.lri.fr (Postfix) with ESMTP id 38CB8A464C; Fri, 4 Apr 2008 14:42:58 +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 lR0SVqyuQbwc; Fri, 4 Apr 2008 14:42:58 +0200 (CEST) Received: from [129.175.4.117] (lri4-117 [129.175.4.117]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ext.lri.fr (Postfix) with ESMTP id 204B5A461C; Fri, 4 Apr 2008 14:42:58 +0200 (CEST) Message-ID: <47F622A5.9060707@lri.fr> Date: Fri, 04 Apr 2008 14:44:21 +0200 From: =?ISO-8859-1?Q?Jean-Christophe_Filli=E2tre?= User-Agent: Thunderbird 1.5.0.14ubu (X11/20080306) MIME-Version: 1.0 To: Keiko Nakata Cc: tews@cs.ru.nl, caml-list@inria.fr Subject: Re: [Caml-list] recursive modules: Cannot safely evaluate the definition References: <18421.59994.153567.662401@tandem.cs.ru.nl> <20080404.180015.125124978.keiko@kurims.kyoto-u.ac.jp> In-Reply-To: <20080404.180015.125124978.keiko@kurims.kyoto-u.ac.jp> X-Enigmail-Version: 0.94.2.0 OpenPGP: url=http://www.lri.fr/~filliatr/mykey.asc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Miltered: at concorde with ID 47F62244.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; filliatre:01 filliatre:01 lri:01 recursive:01 functors:01 recursive:01 ocaml:01 sig:01 functor:01 functor:01 struct:01 struct:01 val:01 wrote:01 rec:01 Keiko Nakata wrote: > Hello. > > I think that functors cannot be recursive in the current OCaml. They can: ----------------------------------------------------------------- module type S = sig type t = int end module rec F : functor(X : S) -> S = functor(X: S) -> struct type t = M.t end and M : S = F(struct type t = int end) let x : M.t = 42 ----------------------------------------------------------------- But it is likely that you won't do anything useful with a functor like this (try adding a "val x : t" in the signature and to define x in F as equal to M.x and you'll bump on the "Cannot safely evaluate the definition of ..." error). -- Jean-Christophe