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 HAA13908; Fri, 16 Aug 2002 07:16:19 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 HAA13737 for ; Fri, 16 Aug 2002 07:16:18 +0200 (MET DST) Received: from kurims.kurims.kyoto-u.ac.jp (kurims.kurims.kyoto-u.ac.jp [130.54.16.1]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g7G5GGr21873 for ; Fri, 16 Aug 2002 07:16:17 +0200 (MET DST) Received: from localhost (suiren.kurims.kyoto-u.ac.jp [130.54.16.25]) by kurims.kurims.kyoto-u.ac.jp (8.9.3/3.7W) with ESMTP id OAA13869; Fri, 16 Aug 2002 14:16:10 +0900 (JST) To: Diego-Olivier.FERNANDEZ-PONS@cicrp.jussieu.fr Cc: caml-list@inria.fr Subject: Re: [Caml-list] Simuler les vues avec des variantes polymorphes In-Reply-To: References: X-Mailer: Mew version 1.94.2 on Emacs 21.2 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Message-Id: <20020816141610D.garrigue@kurims.kyoto-u.ac.jp> Date: Fri, 16 Aug 2002 14:16:10 +0900 From: Jacques Garrigue X-Dispatcher: imput version 20000228(IM140) Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk From: Diego Olivier Fernandez Pons > type 'a heapView =3D > [ `Empty > | `Single of 'a * int > | `Link of 'a prioritySQ * 'a prioritySQ ] [...] > Seulement je ne peux par faire ceci > = > let insert x p =3D function > | `Empty -> ... > | `Single _ -> ... > | `Link _ -> ... > | other -> insert x p (to_heap_view other) > = > car le typeur n'accepte pas le m=E9lange des types (je peux toujours > mettre tous les constructeurs dans un seul type il est vrai mais ce > n'est pas tr=E8s propre) = Je ne suis pas sur de tout comprendre, mais si le type de to_heap_view est : 'a otherView -> 'a heapView et si otherView est aussi un type de variant polymorphe, alors on peut deja ecrire | #otherView as other -> insert x p (to_heap_view other) Est-ce le comportement desire'? Attention, si ton let ci-dessus est en fait un let rec, il faut peut-etre ecrire: (to_heap_view other : ['a heapView] :> [> 'a heapView]) pour eviter d'unifier le resultat de to_heap_view a` l'entree de insert. > Est-il possible de concevoir des variantes polymorphes o=F9 le typeur > accepterait des unions de types ? (en ce sens qu'au lieu de typer une > fonction par les g=E9n=E9rateurs i.e. "tout type contenant Empty" ... = il > la type par union de tous les types d=E9clar=E9s qui contiennent Empty= ) Et quid des types pas encore declares? L'idee des variants polymorphes est de se debarasser des declarations prealables. Mais on peut toujours ecrire des declarations a` posteriori: type 'a anyView =3D ['a heapView | 'a otherView] ------------------------------------------------------------------------= --- Jacques Garrigue Kyoto University garrigue at kurims.kyoto-u.ac= .jp JG ------------------- 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