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 VAA31898; Sun, 30 Mar 2003 21:16:21 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id VAA31928 for ; Sun, 30 Mar 2003 21:16:14 +0200 (MET DST) Received: from avalon.ens-lsh.fr (mailhost.ens-lsh.fr [193.51.131.2]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h2UJG9X02696 for ; Sun, 30 Mar 2003 21:16:09 +0200 (MET DST) Received: from avalon.ens-lsh.fr (localhost [127.0.0.1]) by avalon.ens-lsh.fr (8.12.8/8.12.8) with ESMTP id h2UKDhYn028496 for ; Sun, 30 Mar 2003 21:13:43 +0100 (WEST) Received: from ens-notes1.ens-lsh.fr (ens-notes1.ens-lsh.fr [10.2.1.44]) by avalon.ens-lsh.fr (8.12.8/8.12.8) with ESMTP id h2UKDhFv028493 for ; Sun, 30 Mar 2003 21:13:43 +0100 (WEST) Received: from ens-lyon.fr ([10.3.25.150]) by ens-notes1.ens-lsh.fr (Lotus Domino Release 5.0.10) with SMTP id 2003033021143565:16971 ; Sun, 30 Mar 2003 21:14:35 +0200 Date: Sun, 30 Mar 2003 21:12:38 +0200 From: Damien To: caml-list@pauillac.inria.fr Subject: [Caml-list] typing class... Message-Id: <20030330211238.6b499e17.Damien.Pous@ens-lyon.fr> Organization: mosthagloups X-Mailer: Sylpheed version 0.8.10claws13 (GTK+ 1.2.10; i386-debian-linux-gnu) Mime-Version: 1.0 X-MIMETrack: Itemize by SMTP Server on ens-notes1/ENS-LSH(Release 5.0.10 |March 22, 2002) at 30/03/2003 21:14:35, Serialize by Router on ens-notes1/ENS-LSH(Release 5.0.10 |March 22, 2002) at 30/03/2003 21:14:36 Content-Type: multipart/mixed; boundary="Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8" X-Spam: no; 0.00; damien:01 ens-lyon:01 bug:01 mli:01 ocamlc:01 dummy:01 coerce:01 inherit:01 toplevel:01 match:02 compile:02 typing:03 classes:03 annoying:03 recursive:03 X-Attachments: type="application/octet-stream" name="Makefile" name="Makefile" type="application/octet-stream" name="types.mli" name="types.mli" type="application/octet-stream" name="ab.mli" name="ab.mli" type="application/octet-stream" name="ab.ml" name="ab.ml" Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII hello, I am not sure this is a bug, but this is annoying... I want to define two class, whose types are mutually recursive and grow along the different layers of my project : I simplified the code a lot, please don't say "that's dummy code"... so let be this horrible file : > (* [*_vt] means "virtual class type", and [*_t] means "class type" *) > > (* initial class types for a and b *) > >class type virtual ['a, 'b] a_vt = object > constraint 'a = ('a, 'b) #a_t > constraint 'b = ('a, 'b) #b_t > method virtual coerce: 'a > method as_a: ('a, 'b) a_t >end >and virtual ['a, 'b] b_vt = object > constraint 'a = ('a, 'b) #a_t > constraint 'b = ('a, 'b) #b_t > method virtual coerce: 'b > method as_b: ('a, 'b) b_t >end > >and ['a, 'b] a_t = object > inherit ['a, 'b] a_vt > method coerce: 'a >end >and ['a, 'b] b_t = object > inherit ['a, 'b] b_vt > method coerce: 'b >end > >(* some layers higher : classes have grown *) > >class type virtual ['a, 'b] a_k_vt = >object > constraint 'a = ('a, 'b) #a_k_t > constraint 'b = ('a, 'b) #b_k_t > inherit ['a, 'b] a_vt > method as_a_k: ('a, 'b) a_k_t >end >and virtual ['a, 'b] b_k_vt = >object > constraint 'a = ('a, 'b) #a_k_t > constraint 'b = ('a, 'b) #b_k_t > inherit ['a, 'b] b_vt > method as_b_k: ('a, 'b) b_k_t >end >and ['a, 'b] a_k_t = object > inherit ['a, 'b] a_k_vt > method coerce: 'a >end >and ['a, 'b] b_k_t = object > inherit ['a, 'b] b_k_vt > method coerce: 'b >end let's then implement in : >open Types > >(* initial classes *) >class virtual ['a, 'b] a : ['a, 'b] a_vt = >object (self) > method as_a = (self :> ('a, 'b) a_t) >end > >class virtual ['a, 'b] b : ['a, 'b] b_vt = >object (self) > method as_b = (self :> ('a, 'b) b_t) >end > >(* taller classes *) >class virtual ['a, 'b] a_k : ['a, 'b] a_k_vt = >object (self) > inherit ['a, 'b] a > method as_a_k = (self :> ('a, 'b) a_k_t) >end > >class virtual ['a, 'b] b_k : ['a, 'b] b_k_vt = >object (self) > inherit ['a, 'b] b > method as_b_k = (self :> ('a, 'b) b_k_t) >end within the toplevel, this works fine, but let's have an interface file : >open Types > >class virtual ['a, 'b] a : ['a, 'b] a_vt >class virtual ['a, 'b] b : ['a, 'b] b_vt > >class virtual ['a, 'b] a_k : ['a, 'b] a_k_vt >class virtual ['a, 'b] b_k : ['a, 'b] b_k_vt when I compile, I get : >ocamlc -c types.mli >ocamlc -c ab.mli >ocamlc -c ab.ml >The implementation ab.ml does not match the interface ab.cmi: >Type declarations do not match: > type ('a, 'b) b_k = > < as_b : ('a, 'b) Types.b_t; as_b_k : ('a, 'b) Types.b_k_t; coerce > :'b > constraint 'a = ('a, 'b) #Types.a_k_t > constraint 'b = ('a, 'b) #Types.b_k_t >is not included in > type ('a, 'b) b_k = > < as_b : ('a, 'b) Types.b_t; as_b_k : ('a, 'b) Types.b_k_t; coerce > :'b > constraint 'a = ('a, 'b) #Types.a_k_t > constraint 'b = ('a, 'b) #Types.b_k_t >make: *** [all] Erreur 2 grmpf... I've found an other solution for my code, but, I think there's a problem on somewhere ! Any explanation !? Thanks, damien --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8 Content-Type: application/octet-stream; name="Makefile" Content-Disposition: attachment; filename="Makefile" Content-Transfer-Encoding: base64 YWxsOgoJb2NhbWxjIC1jIHR5cGVzLm1saQoJb2NhbWxjIC1jIGFiLm1saQoJb2NhbWxjIC1jIGFi Lm1sCg== --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8 Content-Type: application/octet-stream; name="types.mli" Content-Disposition: attachment; filename="types.mli" Content-Transfer-Encoding: base64 Y2xhc3MgdHlwZSB2aXJ0dWFsIFsnYSwgJ2JdIGFfdnQgPSBvYmplY3QKICBjb25zdHJhaW50ICdh ID0gKCdhLCAnYikgI2FfdAogIGNvbnN0cmFpbnQgJ2IgPSAoJ2EsICdiKSAjYl90CiAgbWV0aG9k IHZpcnR1YWwgY29lcmNlOiAnYQogIG1ldGhvZCBhc19hOiAoJ2EsICdiKSBhX3QgIAplbmQKYW5k IHZpcnR1YWwgWydhLCAnYl0gYl92dCA9IG9iamVjdAogIGNvbnN0cmFpbnQgJ2EgPSAoJ2EsICdi KSAjYV90CiAgY29uc3RyYWludCAnYiA9ICgnYSwgJ2IpICNiX3QKICBtZXRob2QgdmlydHVhbCBj b2VyY2U6ICdiCiAgbWV0aG9kIGFzX2I6ICgnYSwgJ2IpIGJfdCAgCmVuZAoKYW5kIFsnYSwgJ2Jd IGFfdCA9IG9iamVjdAogIGluaGVyaXQgWydhLCAnYl0gYV92dAogIG1ldGhvZCBjb2VyY2U6ICdh CmVuZAphbmQgWydhLCAnYl0gYl90ID0gb2JqZWN0CiAgaW5oZXJpdCBbJ2EsICdiXSBiX3Z0CiAg bWV0aG9kIGNvZXJjZTogJ2IKZW5kCgoKCmNsYXNzIHR5cGUgdmlydHVhbCBbJ2EsICdiXSBhX2tf dnQgPSAKb2JqZWN0CgogIGNvbnN0cmFpbnQgJ2EgPSAoJ2EsICdiKSAjYV9rX3QKICBjb25zdHJh aW50ICdiID0gKCdhLCAnYikgI2Jfa190CgogIGluaGVyaXQgWydhLCAnYl0gYV92dAogIG1ldGhv ZCBhc19hX2s6ICgnYSwgJ2IpIGFfa190IAoKZW5kCmFuZCB2aXJ0dWFsIFsnYSwgJ2JdIGJfa192 dCA9IApvYmplY3QKCiAgY29uc3RyYWludCAnYSA9ICgnYSwgJ2IpICNhX2tfdAogIGNvbnN0cmFp bnQgJ2IgPSAoJ2EsICdiKSAjYl9rX3QKCiAgaW5oZXJpdCBbJ2EsICdiXSBiX3Z0CiAgbWV0aG9k IGFzX2JfazogKCdhLCAnYikgYl9rX3QgCmVuZAphbmQgIFsnYSwgJ2JdIGFfa190ID0gb2JqZWN0 CiAgaW5oZXJpdCBbJ2EsICdiXSBhX2tfdnQKICBtZXRob2QgY29lcmNlOiAnYQplbmQKYW5kICBb J2EsICdiXSBiX2tfdCA9IG9iamVjdAogIGluaGVyaXQgWydhLCAnYl0gYl9rX3Z0CiAgbWV0aG9k IGNvZXJjZTogJ2IKZW5kCg== --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8 Content-Type: application/octet-stream; name="ab.mli" Content-Disposition: attachment; filename="ab.mli" Content-Transfer-Encoding: base64 b3BlbiBUeXBlcwoKY2xhc3MgdmlydHVhbCBbJ2EsICdiXSBhIDogICAgWydhLCAnYl0gYV92dApj bGFzcyB2aXJ0dWFsIFsnYSwgJ2JdIGIgOiAgICBbJ2EsICdiXSBiX3Z0CgpjbGFzcyB2aXJ0dWFs IFsnYSwgJ2JdIGFfayAgOiBbJ2EsICdiXSBhX2tfdnQKY2xhc3MgdmlydHVhbCBbJ2EsICdiXSBi X2sgIDogWydhLCAnYl0gYl9rX3Z0CgoK --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8 Content-Type: application/octet-stream; name="ab.ml" Content-Disposition: attachment; filename="ab.ml" Content-Transfer-Encoding: base64 b3BlbiAgVHlwZXMKCgpjbGFzcyB2aXJ0dWFsIFsnYSwgJ2JdIGEgOiBbJ2EsICdiXSBhX3Z0ID0K b2JqZWN0IChzZWxmKQogIG1ldGhvZCBhc19hID0gKHNlbGYgOj4gKCdhLCAnYikgYV90KQplbmQK CmNsYXNzIHZpcnR1YWwgWydhLCAnYl0gYiA6IFsnYSwgJ2JdIGJfdnQgPQpvYmplY3QgKHNlbGYp CiAgbWV0aG9kIGFzX2IgPSAoc2VsZiA6PiAoJ2EsICdiKSBiX3QpCmVuZAoKCmNsYXNzIHZpcnR1 YWwgWydhLCAnYl0gYV9rIDogWydhLCAnYl0gYV9rX3Z0ID0Kb2JqZWN0IChzZWxmKQogIGluaGVy aXQgWydhLCAnYl0gYQogIG1ldGhvZCBhc19hX2sgPSAoc2VsZiA6PiAoJ2EsICdiKSBhX2tfdCkg CmVuZAoKY2xhc3MgdmlydHVhbCBbJ2EsICdiXSBiX2sgOiBbJ2EsICdiXSBiX2tfdnQgPQpvYmpl Y3QgKHNlbGYpCiAgaW5oZXJpdCBbJ2EsICdiXSBiCiAgbWV0aG9kIGFzX2JfayA9IChzZWxmIDo+ ICgnYSwgJ2IpIGJfa190KSAKZW5kCg== --Multipart_Sun__30_Mar_2003_21:12:38_+0200_08392ba8-- ------------------- 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