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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 0EC42BB84 for ; Fri, 26 Sep 2008 02:03:32 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkIFAFbD20jAXQImiGdsb2JhbACOHoUBAQEBFSKgdRKGSTyBZQ X-IronPort-AV: E=Sophos;i="4.33,309,1220220000"; d="scan'208";a="17359907" Received: from discorde.inria.fr ([192.93.2.38]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Sep 2008 02:03:31 +0200 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id m8Q03VT4003470 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 26 Sep 2008 02:03:31 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At0DAEjE20gjCUt7gWdsb2JhbACOHoUBAQEWIgSgdBKGSjyBZQ X-IronPort-AV: E=Sophos;i="4.33,309,1220220000"; d="scan'208";a="15358371" Received: from sys23.mail.msu.edu ([35.9.75.123]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 26 Sep 2008 02:03:17 +0200 Received: from c-98-209-60-49.hsd1.mi.comcast.net ([98.209.60.49] helo=[192.168.1.4]) by sys23.mail.msu.edu with esmtpsa (Exim 4.63 #1) (TLSv1:AES256-SHA:256) id 1Kj0nj-0005T7-Re for caml-list@inria.fr; Thu, 25 Sep 2008 20:03:15 -0400 Message-ID: <48DC26C0.8000505@msu.edu> Date: Thu, 25 Sep 2008 20:03:12 -0400 From: Jeff Shaw User-Agent: Thunderbird 2.0.0.16 (Windows/20080708) MIME-Version: 1.0 To: caml-list@inria.fr Subject: Re: mutually dependent class and type Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus: None found by Clam AV X-Miltered: at discorde with ID 48DC26D3.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; variant:02 variant:02 data:02 data:02 string:02 string:02 element:03 element:03 let:03 dependent:04 mutually:06 function:08 object:09 equivalent:09 content:89 I don't know how you might directly get what you want, but here's one way to get an equivalent result. class element_aux (c : [`Data of string | `Element of element list]) = object end type content = Data of string | Element of element list;; let content_of_variant = function Data d -> `Data d | Element e -> `Element e class element (c : content) = element_aux (content_of_variant c)