caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: brogoff@speakeasy.net
To: caml-list@inria.fr
Subject: Re: [Caml-list] record declaration, SML
Date: Thu, 9 Jan 2003 19:45:36 -0800 (PST)	[thread overview]
Message-ID: <Pine.LNX.4.44.0301091915280.23221-100000@grace.speakeasy.net> (raw)
In-Reply-To: <3E1E0249.6050102@baretta.com>

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


  parent reply	other threads:[~2003-01-10  3:45 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-09 13:56 A. Ozmen
2003-01-09 18:27 ` brogoff
2003-01-09 23:15   ` A. Ozmen
2003-01-10  9:21   ` Xavier Leroy
2003-01-10 14:34     ` brogoff
2003-01-09 22:42 ` Daniel de Rauglaudre
2003-01-09 23:14   ` Alessandro Baretta
2003-01-10  2:59     ` Daniel de Rauglaudre
2003-01-10  3:45     ` brogoff [this message]
2003-01-10  7:45       ` Alessandro Baretta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0301091915280.23221-100000@grace.speakeasy.net \
    --to=brogoff@speakeasy.net \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).