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=1.4 required=5.0 tests=SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id 9D8A7BC69 for ; Wed, 25 Apr 2007 06:19:02 +0200 (CEST) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.172]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l3P4J2L2026096 for ; Wed, 25 Apr 2007 06:19:02 +0200 Received: by ug-out-1314.google.com with SMTP id k3so298185ugf for ; Tue, 24 Apr 2007 21:19:02 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:mime-version:content-transfer-encoding:message-id:content-type:to:from:subject:date:x-mailer; b=n1p88ziXcW/SPSxQ3GlNzgIDAbqbVmAQ0aRDhZQC4SaA1oMOfTTmq2OHU4Yd5wAEpfSlS1PRBPANaG4YO1/MohWLXA4UPyi/lsTO2HEHgrDFgK3ptbfr5aTFoZXqsEyz9JvuNcugqutaVGB1q+d94NaMh3gvGvxBwzD1f612GcM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:mime-version:content-transfer-encoding:message-id:content-type:to:from:subject:date:x-mailer; b=Uii+AVxwuJFXMQjPn6Zj0pKEGzYtOmoiBeRha7Vf4tvl9EcDkEFm55Gybxktco2DdPZU9RcQr82HjKBF748aNSa3W4UJd3Fyf0cFDB6VapwfcCgjR2Oi1L8JKTgmz/+JjSBaRzj3/Cr2k9CuZ71ApLMBmjMqkDUCHzPNFGKPoxU= Received: by 10.67.98.4 with SMTP id a4mr784346ugm.1177474742140; Tue, 24 Apr 2007 21:19:02 -0700 (PDT) Received: from ?192.168.1.34? ( [81.37.190.201]) by mx.google.com with ESMTP id z34sm1091654ikz.2007.04.24.21.19.01; Tue, 24 Apr 2007 21:19:01 -0700 (PDT) Mime-Version: 1.0 (Apple Message framework v752.3) Content-Transfer-Encoding: 7bit Message-Id: <15893C08-FD0C-456B-A12F-DADCF6CC95F9@gmail.com> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed To: Caml List From: Joel Reymont Subject: Transforming of ASTs and polymorphic variants Date: Wed, 25 Apr 2007 05:19:00 +0100 X-Mailer: Apple Mail (2.752.3) X-j-chkmail-Score: MSGID : 462ED6B6.000 on discorde : j-chkmail score : XXX : 5/20 1 0.000 -> 3 X-Miltered: at discorde with ID 462ED6B6.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; transforming:01 variants:01 constructors:01 variants:01 polymorphic:01 polymorphic:01 beginners:01 constructor:01 integer:01 integer:01 boolean:02 boolean:02 modules:02 conv:02 string:02 My apologies if this is a beginners question... I have two ASTs in different modules that look very much alike in that some constructors have the same name and type name. When I transform that ASTs I end up "re-applying" the similarly named constructor and arguments. This is best explained with an example. a.ml: type typ = | Integer | Double | String | Boolean b.ml: type ty = | Integer | Double | String | Boolean | Void A transformation function would be let conv_type = function | A.Integer -> B.Integer | A.String -> B.String | A.Boolean -> B.Boolean I don't want to share types between ASTs since, like above, some of them may be supersets of others. How can I improve this with polymorphic variants? Thanks, Joel -- http://wagerlabs.com/