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 EAA15157; Fri, 10 Jan 2003 04:45:45 +0100 (MET) 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 EAA15219 for ; Fri, 10 Jan 2003 04:45:44 +0100 (MET) Received: from grace.speakeasy.org (grace.speakeasy.org [216.254.0.2]) by nez-perce.inria.fr (8.11.1/8.11.1) with SMTP id h0A3jc506963 for ; Fri, 10 Jan 2003 04:45:38 +0100 (MET) Received: (qmail 18656 invoked by uid 36130); 10 Jan 2003 03:45:37 -0000 Received: from localhost (sendmail-bs@127.0.0.1) by localhost with SMTP; 10 Jan 2003 03:45:37 -0000 Date: Thu, 9 Jan 2003 19:45:36 -0800 (PST) From: brogoff@speakeasy.net To: caml-list@inria.fr Subject: Re: [Caml-list] record declaration, SML In-Reply-To: <3E1E0249.6050102@baretta.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Fri, 10 Jan 2003, Alessandro Baretta wrote: > Daniel de Rauglaudre wrote: > > Hi, > > > > > >>What's best translation of the following SML type? > >>datatype t = C of { f : int } > > > > > > A solution is: > > type t = C of < f : int > > > Interesting solution. However, Ocaml does not support > defining objects on the fly. The following > > let c = new object method f = 1 end in C c > is not valid Ocaml. > > So, in order to define just one value one needs to define an > entire class as in the following example. > > class f_one = object method f = 1 end > let res = C (new f_one) Is this such a big problem? I imagine we're more likely to provide a smart constructor for t, something like let mkC o = C(o :> < f : int >) and just stuff any object with method f : int in there. If we only want there to be one kind of thing, we're better off using a record. Of course, Daniel doesn't have that option since he is discussing a syntactic transformation from SML records into OCaml constructs, and hence using the class system makes sense on account of the differences between SML record typing and that of OCaml. > BTW, why is something like the above not in the language? It > seems only natural to have such a feature since an analogous > construct exists for structs. There are no anonymous records (like SML has) either, so if you see classes as analogous to records rather than structs it doesn't seem so unnatural. No, I realize that's not a real explanation. -- Brian ------------------- 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