From: brogoff@speakeasy.net
To: "A. Ozmen" <aoz@dmailman.com>
Cc: "caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [Caml-list] record declaration, SML
Date: Thu, 9 Jan 2003 10:27:57 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.44.0301091013420.5662-100000@grace.speakeasy.net> (raw)
In-Reply-To: <web-4839870@dmailman.com>
Hi,
You've noticed that OCaml records aren't like SML records. Here are a few
places where they differ.
You can't have anonymous records in OCaml, so in the case of a datatype
declaration like yours you need something like
type t = C of t_record
and t_record = { f : int }
If you hide the record definition, then you can't match on it, but I imagine
you know that already.
In the case of anonymous records as function arguments, you could try labels.
In the case of records in a module sharing field names, well, you can't do
that either, so you'll need to use classes or find some way to disambiguate
the fields. This is one of those annoyances of Caml (like the lack of
overloading :) that you just need to get used to. SML is a bit better here
IMO, but still not ideal; I think that there was an SML variant (SML#) that
was appealing but it looks like that idea isn't going anywhere.
There are a few other conveniences in SML record handling too, like the ...
notation, that don't exist in OCaml.
Oh yeah, also be careful initializing records with stateful functions, because
you may be surprised at the order of evaluation.
-- Brian
On Thu, 9 Jan 2003, A. Ozmen wrote:
> Hi,
>
> What's best translation of the following SML type?
> datatype t = C of { f : int }
>
> I have to define extra record types, I guess. Then, not including these
> types in interface (.mli) files? Is this the right approach?
>
> Thanks.
> __________________________________________________________
> Get your Private, Free Email from HTTP://www.DmailMan.Com
> -------------------
> 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
>
-------------------
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
next prev parent reply other threads:[~2003-01-09 18:28 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 [this message]
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
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.0301091013420.5662-100000@grace.speakeasy.net \
--to=brogoff@speakeasy.net \
--cc=aoz@dmailman.com \
--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