From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id OAA26371; Thu, 12 Aug 2004 14:49:40 +0200 (MET DST) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA25942 for ; Thu, 12 Aug 2004 14:49:39 +0200 (MET DST) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by concorde.inria.fr (8.12.10/8.12.10) with ESMTP id i7CCncRM025141 for ; Thu, 12 Aug 2004 14:49:39 +0200 Received: from ibm3.cicrp.jussieu.fr (ibm3.cicrp.jussieu.fr [134.157.15.3]) by shiva.jussieu.fr (8.12.11/jtpda-5.4) with ESMTP id i7CCnRHM019974 for ; Thu, 12 Aug 2004 14:49:27 +0200 (CEST) X-Ids: 165 Received: from ibm1.cicrp.jussieu.fr (ibm1.cicrp.jussieu.fr [134.157.15.1]) by ibm3.cicrp.jussieu.fr (8.8.8/jtpda/mob-V8) with ESMTP id OAA121104 for ; Thu, 12 Aug 2004 14:47:30 +0200 Received: from localhost (fernande@localhost) by ibm1.cicrp.jussieu.fr (8.8.8/jtpda/mob-v8) with ESMTP id OAA524532 for ; Thu, 12 Aug 2004 14:47:07 +0200 X-Authentication-Warning: ibm1.cicrp.jussieu.fr: fernande owned process doing -bs Date: Thu, 12 Aug 2004 14:47:07 +0200 (DST) From: Diego Olivier Fernandez Pons X-X-Sender: fernande@ibm1 To: caml-list@inria.fr Subject: Re: [Caml-list] getting the type of a polymorphic data ? In-Reply-To: <20040812143443.2aba80c1@babasse> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE X-Miltered: at concorde with ID 411B6762.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at shiva.jussieu.fr with ID 411B6757.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Antivirus: scanned by sophie at shiva.jussieu.fr X-Loop: caml-list@inria.fr X-Spam: no; 0.00; pons:01 pons:01 etu:99 caml-list:01 intset:01 definit:01 polymorphe:01 brisset:01 yellow:99 yellow:99 puisqu'il:01 combinatoire:01 d'ou:01 hash:01 hash:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Bonjour [Je poste la r=E9ponse =E0 une question qui m'a =E9t=E9 pos=E9e en dehors d= e la liste car mes explications semblent ne pas avoir =E9t=E9 claires] > mal compris ton probl=E8me -- pourquoi ne pas d=E9finir un type du genre = : > > type number =3D Int of int | Float of float > > et faire un matching qui ressemblerait =E0 > > let x' =3D match x with > | Int x -> IntSet.from_poly x > | Float x -> FloatIntervalSet.from_poly x Parce que ce n'est pas moi qui d=E9finit x. En fait (voir message initial) x est un ensemble de type polymorphe car l'utilisateur est suppos=E9 pouvoir y mettre ses propres types. Voici la situation que je veux _=E9viter_ (exemple tir=E9 de FaCiLe - Pascal Brisset et Nicolas Barnier) let yellow =3D 0 and blue =3D 1 and green =3D 2 in let x =3D IntDomain.from_list [0; 1; 2] A la place je veux type color =3D Yellow | Blue | Green let x =3D Domain.from_list [Yellow ; Blue; Green] Mais il faut que la partie interne de la librairie, elle, manipule un ensemble d'entiers (pour des questions de performance puisqu'il s'agit d'optimisation combinatoire). D'o=F9 l'id=E9e simple let x =3D Domain.from_list [(hash Yellow) ; (hash Blue) ; (hash Green)] ou encore let x =3D Domain.from_list_hashed [ Yellow ; Blue ; Green] Mais pour que cette optimisation soit correcte, il faut que hash x =3D hash y =3D> x =3D y, d'o=F9 ma question. Autre pr=E9cision, ce n'est pas grave si un type est isomorphe =E0 un entier mais le compilateur ne le voit pas par exemple type x =3D A of int Obj.is_int (A 1) # false Diego Olivier ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners