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 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr 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 2E03DBB84 for ; Mon, 14 Jul 2008 19:05:36 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AokEABske0jUnw7XcGdsb2JhbACCN493AQwFAgQHE5gl X-IronPort-AV: E=Sophos;i="4.30,360,1212357600"; d="scan'208";a="13103116" Received: from fhw-relay07.plus.net ([212.159.14.215]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES256-SHA; 14 Jul 2008 19:05:35 +0200 Received: from [90.192.139.241] (helo=beast.local) by fhw-relay07.plus.net with esmtpa (Exim) id 1KIRUU-0004qh-Tj for caml-list@yquem.inria.fr; Mon, 14 Jul 2008 18:05:35 +0100 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Mutually recursive types in different modules Date: Mon, 14 Jul 2008 18:04:32 +0100 User-Agent: KMail/1.9.9 References: <1216054202.29061.2.camel@andre.mz.digirati.com.br> In-Reply-To: <1216054202.29061.2.camel@andre.mz.digirati.com.br> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200807141804.32640.jon@ffconsultancy.com> X-Plusnet-Relay: da1f0b72fb73df5117f785a8f5c2e003 X-Spam: no; 0.00; recursive:01 foo:01 recursive:01 ocaml:01 recursion:01 polymorphism:01 nathan:98 frog:98 wrote:01 caml-list:01 int:01 int:01 define:02 modules:02 modules:02 On Monday 14 July 2008 17:50:02 Andre Nathan wrote: > Hello > > Say I have the following type definition: > > type a = { x: int; foo: b } and b = { y: int; bar: a } > > Is it possible to define types a and b in their own files (thus in > modules A and B) and still allow them to be mutually recursive? Yes. See the OCaml Journal article "Tricks with recursion: knots, modules and polymorphism" or Google for the phrase "untying the recursive knot". -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?e