From: Edgar Friendly <thelema314@gmail.com>
To: Pierre Weis <pierre.weis@inria.fr>
Cc: Alain Frisch <alain@frisch.fr>, caml-list <caml-list@yquem.inria.fr>
Subject: Re: [Caml-list] Compiler feature - useful or not?
Date: Wed, 14 Nov 2007 13:19:03 -0600 [thread overview]
Message-ID: <473B4A27.3050603@gmail.com> (raw)
In-Reply-To: <20071114184352.GB28796@yquem.inria.fr>
Pierre Weis wrote:
> If we stick to the row example of positive values, we get:
>
> - a value of type row is in fact a concrete integer (it is not hidden in any
> way),
> - a value of type row can only be created by the make function defined in the
> implementation of the module that defines the private type,
> - a value of type row can be projected out of type row to a value of type int
> with a ``no-op'' identity function (I called it from in the example).
>
> So, no: a value of type row is not of type int and you need a marker to
> indicate the projection (for the time being the marker is a (identity)
> function call to let the implemention as simple as possible, but a sub-typing
> constraint makes sense and we can provide it if this is considered clearer).
>
> Best regards,
>
> -- Pierre
Other than piggybacking on the private row types work by J. Garrigue and
probably simplicity of implementation, does there exist a reason for
involving the module system in this mechanism?
At the basic level, creation and projection will always be identity
functions (except that creation can throw exceptions), so it seems
reasonable to elide that repetitive code. For more complex examples (a
private type with more functions that work on the internal
representation of that type), since the representation is already
exposed, it seems appropriate to just let the client implement those
functions through the identity accessors. It'd probably be safer than
doing so in the Row module, because the compiler could enforce the
creation invariant in those functions instead of allowing them to bypass
the 'make' function.
Once all these functions are removed from the module all that's left is
the type definition and the creation constraint. Am I missing something?
E.
next prev parent reply other threads:[~2007-11-14 19:19 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-13 23:41 Edgar Friendly
2007-11-14 0:08 ` [Caml-list] " Yaron Minsky
2007-11-14 0:21 ` Martin Jambon
2007-11-14 7:58 ` Pierre Weis
2007-11-14 12:37 ` Alain Frisch
2007-11-14 13:56 ` Virgile Prevosto
2007-11-14 14:35 ` Pierre Weis
2007-11-14 16:38 ` Alain Frisch
2007-11-14 18:43 ` Pierre Weis
2007-11-14 19:19 ` Edgar Friendly [this message]
2007-11-15 6:29 ` Alain Frisch
2007-11-15 13:26 ` Pierre Weis
2007-11-15 17:29 ` Edgar Friendly
2007-11-15 20:28 ` Fernando Alegre
2007-11-16 0:47 ` Brian Hurt
2007-11-15 22:37 ` Michaël Le Barbier
2007-11-15 22:24 ` Michaël Le Barbier
2007-11-16 0:30 ` Yaron Minsky
2007-11-16 1:51 ` Martin Jambon
2007-11-16 9:23 ` Alain Frisch
2007-11-16 14:17 ` rossberg
2007-11-16 15:08 ` Martin Jambon
2007-11-16 16:43 ` Martin Jambon
2007-11-16 16:46 ` Till Varoquaux
2007-11-16 17:27 ` Edgar Friendly
2007-11-16 17:47 ` Martin Jambon
2007-11-16 17:54 ` Edgar Friendly
2007-11-16 18:10 ` Fernando Alegre
2007-11-16 19:18 ` David Allsopp
2007-11-16 19:32 ` Fernando Alegre
2007-11-16 19:50 ` Gerd Stolpmann
2007-11-16 17:31 ` Fernando Alegre
2007-11-16 17:43 ` Edgar Friendly
2007-11-16 0:46 ` Christophe TROESTLER
2007-11-16 8:23 ` Andrej Bauer
2007-11-16 8:58 ` Jean-Christophe Filliâtre
2007-11-16 9:13 ` Andrej Bauer
2007-11-16 9:48 ` Christophe TROESTLER
2007-11-14 16:57 ` Edgar Friendly
2007-11-14 21:04 ` Pierre Weis
2007-11-14 22:09 ` Edgar Friendly
2007-11-15 0:17 ` Jacques Garrigue
2007-11-15 6:23 ` Edgar Friendly
2007-11-15 10:53 ` Vincent Hanquez
2007-11-15 13:48 ` Jacques Carette
2007-11-15 14:43 ` Jon Harrop
2007-11-15 16:54 ` Martin Jambon
2007-11-14 16:09 ` Edgar Friendly
2007-11-14 16:20 ` Brian Hurt
2007-11-14 11:01 ` Gerd Stolpmann
2007-11-14 10:57 ` Jon Harrop
2007-11-14 14:37 ` Zheng Li
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=473B4A27.3050603@gmail.com \
--to=thelema314@gmail.com \
--cc=alain@frisch.fr \
--cc=caml-list@yquem.inria.fr \
--cc=pierre.weis@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