From: Francois Pottier <francois.pottier@inria.fr>
To: Andreas Rossberg <rossberg@ps.uni-sb.de>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Polymorphic Variants and Number Parameterized Types
Date: Tue, 30 Apr 2002 09:07:32 +0200 [thread overview]
Message-ID: <20020430090732.A16788@pauillac.inria.fr> (raw)
In-Reply-To: <3CCD794B.142F65D@ps.uni-sb.de>; from rossberg@ps.uni-sb.de on Mon, Apr 29, 2002 at 06:48:11PM +0200
Hi Andreas,
On Mon, Apr 29, 2002 at 06:48:11PM +0200, Andreas Rossberg wrote:
>
> Well, if you have a functor like
>
> F : functor(X : sig module type S module Y:S end) -> ...
>
> then it would be polymorphic in an unknown number of types.
Perhaps our views differ. What I gathered from Jones' and Russo's
papers was that modules do not contain types. So, the module type
S cannot be a component of X; rather, the type of the functor F
will be universally quantified over S. This leads me to something
like:
F : forall S. functor (X : S) -> ...
where the distinction between X and Y is eliminated, because it
becomes superfluous. In fact, the `functor' syntax and the name
X are just sugar, since a functor is a function. So I would really
write
F : forall S. S -> ...
> The application
>
> F (struct module type S = sig type t type u val x : t end
> module Y = struct type t = int
> type u = bool
> val x = 7 end
> end)
>
> corresponds to something like
>
> F {t:*,u:*} {x:int} {t=int,u=bool} {Y={x=7}}
I would simply apply
F { x : int } { x = 7 }
or, perhaps (if abstraction is desired)
F (exists t,u.{ x : t }) (pack { x = 7 } as exists t,u.{ x : t })
So, in this example, we seem to need neither higher kinds nor
kind polymorphism. But perhaps my encoding doesn't have the
features you'd wish?
--
François Pottier
Francois.Pottier@inria.fr
http://pauillac.inria.fr/~fpottier/
-------------------
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:[~2002-04-30 7:11 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-29 13:35 [Caml-list] Polymorphic Variants and Number Parameterized Typ es Krishnaswami, Neel
2002-04-29 14:16 ` [Caml-list] Polymorphic Variants and Number Parameterized Types Andreas Rossberg
2002-04-29 15:28 ` Francois Pottier
2002-04-29 16:48 ` Andreas Rossberg
2002-04-30 7:07 ` Francois Pottier [this message]
2002-04-30 10:34 ` [Caml-list] Encoding "abstract" signatures Andreas Rossberg
2002-04-30 15:18 ` [Caml-list] " Francois Pottier
2002-05-01 13:19 ` Andreas Rossberg
2002-05-02 7:47 ` Francois Pottier
2002-05-02 9:32 ` Andreas Rossberg
2002-05-06 7:27 ` Francois Pottier
2002-05-07 9:14 ` Andreas Rossberg
2002-04-30 10:04 ` [Caml-list] Modules and typing John Max Skaller
2002-04-30 11:51 ` Francois Pottier
2002-04-30 23:24 ` John Max Skaller
2002-05-01 8:08 ` Noel Welsh
2002-05-02 6:52 ` Francois Pottier
-- strict thread matches above, loose matches on Subject: below --
2002-04-24 21:44 [Caml-list] Polymorphic Variants and Number Parameterized Types Nadji.Gauthier
2002-04-27 1:17 ` John Max Skaller
2002-04-27 22:44 ` Brian Rogoff
2002-04-28 4:41 ` John Max Skaller
2002-04-29 13:53 ` Nadji.Gauthier
2002-04-29 14:01 ` Brian Rogoff
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=20020430090732.A16788@pauillac.inria.fr \
--to=francois.pottier@inria.fr \
--cc=caml-list@inria.fr \
--cc=rossberg@ps.uni-sb.de \
/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