caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Thomas Fischbacher <Thomas.Fischbacher@Physik.Uni-Muenchen.DE>
To: Sebastian Egner <sebastian.egner@philips.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: also for tagged records? [Was: Re: [Caml-list] (int * int) <> int*int ?]
Date: Fri, 24 Feb 2006 15:01:31 +0100 (CET)	[thread overview]
Message-ID: <Pine.LNX.4.63.0602241451200.30268@eiger.cip.physik.uni-muenchen.de> (raw)
In-Reply-To: <OF15A3F852.0606B44C-ONC125711F.002C18D7-C125711F.002E8C6E@philips.com>


On Fri, 24 Feb 2006, Sebastian Egner wrote:

> This isn't valid Ocaml:
> 
> type a = A of {mutable xA: int; mutable yA: int}
>        | B of xyB
> and xyB = {mutable xB: int; mutable yB: int}
> 
> Background: I had a case (a search tree data strucuture) where 
> the additional indirection results in a 30% runtime penalty,

There now are quite a few cases where this "forced extra indirection" 
business becomes a nuisance. See for example the older discussion in the 
archives on implementing a binary heap properly on the basis of a 
variable-length array. The recommended solution is to use a Z option 
array, for some type Z.

To a certain extent, this may be considered an issue of mandatory static 
type checking and the insistence on minimizing the tagging for in-memory 
representations. If static type checking were advisory, and more tag bits 
would be used internally, many of these problems could be solved. Besides, 
this would offer library implementors the freedom to use somewhat cleaner 
dirty tricks under the hood, while still providing a nice and tidy type-safe 
interface to the outside.

-- 
regards,               tf@cip.physik.uni-muenchen.de              (o_
 Thomas Fischbacher -  http://www.cip.physik.uni-muenchen.de/~tf  //\
(lambda (n) ((lambda (p q r) (p p q r)) (lambda (g x y)           V_/_
(if (= x 0) y (g g (- x 1) (* x y)))) n 1))                  (Debian GNU)


  reply	other threads:[~2006-02-24 14:01 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-23 17:28 (int * int) <> int*int ? Frédéric Gava
2006-02-23 18:33 ` [Caml-list] " Eric Cooper
2006-02-23 19:03   ` Martin Jambon
2006-02-23 19:07   ` Frédéric Gava
2006-02-23 20:15     ` Brian Hurt
2006-02-23 21:30       ` Frédéric Gava
2006-02-23 21:57         ` Brian Hurt
2006-02-23 22:30           ` Frédéric Gava
2006-02-23 22:50             ` Brian Hurt
2006-02-23 23:07               ` Frédéric Gava
2006-02-24  8:38     ` Alessandro Baretta
2006-02-24 12:59     ` Damien Doligez
2006-02-23 18:33 ` Thomas Fischbacher
2006-02-23 18:56 ` David Brown
2006-02-23 19:24   ` Frédéric Gava
2006-02-23 19:37   ` Frédéric Gava
2006-02-23 19:45     ` Frédéric Gava
2006-02-24  0:01       ` Jacques Garrigue
2006-02-24  0:18         ` Lukasz Stafiniak
2006-02-24  2:17           ` Jacques Garrigue
2006-02-24 13:07             ` Alain Frisch
2006-02-25 17:42               ` Vincent Balat
2006-02-25 18:30                 ` Nicolas Pouillard
2006-02-25 19:09                   ` Richard Jones
2006-03-01 12:48                     ` Nicolas Pouillard
2006-02-25 23:17                   ` Christophe TROESTLER
2006-03-01 13:01                     ` Nicolas Pouillard
2006-02-27 11:14                   ` camlp4 renovation [was: [Caml-list] (int * int) <> int*int ?] Hendrik Tews
2006-02-24 13:39             ` [Caml-list] (int * int) <> int*int ? Nicolas Cannasse
2006-02-24 14:49               ` Frédéric Gava
2006-02-24  8:27   ` also for tagged records? [Was: Re: [Caml-list] (int * int) <> int*int ?] Sebastian Egner
2006-02-24 14:01     ` Thomas Fischbacher [this message]
2006-02-23 20:58 ` [Caml-list] (int * int) <> int*int ? Jon Harrop
2006-02-23 21:36   ` Frédéric Gava

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.63.0602241451200.30268@eiger.cip.physik.uni-muenchen.de \
    --to=thomas.fischbacher@physik.uni-muenchen.de \
    --cc=caml-list@yquem.inria.fr \
    --cc=sebastian.egner@philips.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).