Browse thread
[Caml-list] record declaration, SML
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2003-01-10 (03:45) |
From: | brogoff@s... |
Subject: | Re: [Caml-list] record declaration, SML |
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