caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Guillaume Yziquel <guillaume.yziquel@citycable.ch>
To: David Allsopp <dra-news@metastack.com>
Cc: Alain Frisch <alain@frisch.fr>, caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] Re: module typing issue
Date: Mon, 28 Mar 2011 14:02:22 +0200	[thread overview]
Message-ID: <20110328120218.GX20598@localhost> (raw)
In-Reply-To: <E51C5B015DBD1348A1D85763337FB6D972A7088B@Remus.metastack.local>

Le Monday 28 Mar 2011 à 11:32:48 (+0000), David Allsopp a écrit :
> Alain Frisch wrote:
> > On 03/25/2011 08:01 PM, Guillaume Yziquel wrote:
> > > type error = private int
> > >
> > > external get_error : unit ->  error = "zzz"
> > >
> > > You get some error level that you can pattern match as an int, and
> > > this also enforces that all values of type error come from a call to
> > > get_error.
> > 
> > You need to coerce explicitly from type error to type int (... :> int), so
> > this is not really different from defining error as an abstract type and
> > exposing a function error->int.
> 
> Except that calling an identity function like that requires an optimising compiler to spot that the call is irrelevant and can be removed whereas the coercion is handled (and stripped out) during type inference. So although they're roughly equivalent, the private int approach is "neater" by several orders of magnitude (and as long as you only need an abbreviated coercion, a similar amount of keyboard-typing)!
> 
> David

True. But it seems that for most OCaml people, the weirdness of ':>'
isn't worth the few CPU cycles. Haven't seen much code using :>.
external "%identity" seems to be favoured.

-- 
     Guillaume Yziquel


      reply	other threads:[~2011-03-28 12:04 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-25  8:34 [Caml-list] " Joel Reymont
2011-03-25  8:44 ` [Caml-list] " Joel Reymont
2011-03-25 14:17   ` Joel Reymont
2011-03-25 15:46     ` Andreas Rossberg
2011-03-25 15:57       ` Joel Reymont
2011-03-25 16:04         ` Andreas Rossberg
2011-03-25 16:42       ` Guillaume Yziquel
2011-03-25 16:59         ` Andreas Rossberg
2011-03-25 19:01           ` Guillaume Yziquel
2011-03-25 19:13             ` Andreas Rossberg
2011-03-28  7:53             ` Alain Frisch
2011-03-28 10:33               ` Guillaume Yziquel
2011-03-28 11:29                 ` David Allsopp
2011-03-28 11:58                   ` Guillaume Yziquel
2011-03-28 12:11                     ` David Allsopp
2011-03-28 12:29                       ` Guillaume Yziquel
2011-03-28 12:23                     ` Alain Frisch
2011-03-28 12:39                       ` Guillaume Yziquel
2011-03-28 11:32               ` David Allsopp
2011-03-28 12:02                 ` Guillaume Yziquel [this message]

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=20110328120218.GX20598@localhost \
    --to=guillaume.yziquel@citycable.ch \
    --cc=alain@frisch.fr \
    --cc=caml-list@inria.fr \
    --cc=dra-news@metastack.com \
    /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).