caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: "craff73@gmail.com" <craff73@gmail.com>
Cc: luc.maranget@inria.fr, Dmitry Bely <dmitry.bely@gmail.com>,
	caml-list@inria.fr
Subject: Re: [Caml-list] Comparing variant types
Date: Sat, 30 Apr 2011 22:19:50 +0200	[thread overview]
Message-ID: <BANLkTinq3eZPzt3CwFD2P4mL1Te+ykEZdA@mail.gmail.com> (raw)
In-Reply-To: <4746acd6-ddad-498c-a535-a3bfdcb5fec7@email.android.com>

[-- Attachment #1: Type: text/plain, Size: 1009 bytes --]

>
> You want to avoid code size quadratic in the number of constructors. Which
> is possible:
>


let cmp x y = match x, y with
> A, A -> true
> | A, _ | _, A -> false
> | B, B -> true
> | B, _ | _, B -> false


With one twist though: if done that way for (type foo = A | B), the last (_,
B) pattern is actually redundant. If you want to avoid getting a warning
here, you should comment it out or remove it:

  let cmp x y = match x, y with
  | A, A -> true
  | A, _ | _, A -> false
  | B, B -> true
  | B, _ (*| _, B*) -> false

That's the style I use.

On Sat, Apr 30, 2011 at 3:43 PM, craff73@gmail.com <craff73@gmail.com>wrote:

> Hello,
>
> You want to avoid code size quadratic in the number of constructors. Which
> is possible:
>
> let cmp x y = match x, y with
> A, A -> true
> | A, _ | _, A -> false
> | B, B -> true
> | B, _ | _, B -> false
> ...
>
> Cheers
> Christophe
>
> --
> Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté.
>
>

[-- Attachment #2: Type: text/html, Size: 2272 bytes --]

  parent reply	other threads:[~2011-04-30 20:20 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-28 19:16 Ethan Burns
2011-04-28 21:07 ` Vincent Aravantinos
2011-04-28 22:56   ` Ethan Burns
     [not found]   ` <354087020.772283.1304031467793.JavaMail.root@zmbs4.inria.fr>
2011-04-29  8:46     ` Fabrice Le Fessant
2011-04-29  8:57 ` Dmitry Bely
     [not found] ` <164004794.892685.1304067487325.JavaMail.root@zmbs2.inria.fr>
2011-04-29  9:33   ` luc.maranget
2011-04-29 10:54     ` Andrew
2011-04-29 11:17       ` Dmitry Bely
2011-04-29 12:15       ` Jon Harrop
2011-04-30 16:38         ` Andrew
2011-04-29 11:32     ` Dmitry Bely
2011-04-30 13:43     ` craff73
2011-04-30 19:26       ` Andrew
2011-04-30 20:19       ` Gabriel Scherer [this message]
2011-04-30 20:57         ` Yaron Minsky
     [not found] <fa.FGXk5PCsQgS8TidmFkgljpqbLZo@ifi.uio.no>
2011-04-29 11:54 ` Ethan Burns

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=BANLkTinq3eZPzt3CwFD2P4mL1Te+ykEZdA@mail.gmail.com \
    --to=gabriel.scherer@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=craff73@gmail.com \
    --cc=dmitry.bely@gmail.com \
    --cc=luc.maranget@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).