From: bluestorm <bluestorm.dylc@gmail.com>
To: Lukasz Stafiniak <lukstafi@gmail.com>
Cc: Jacques Le Normand <rathereasy@gmail.com>,
caml-list caml-list <caml-list@yquem.inria.fr>
Subject: Re: [Caml-list] GADT constructor syntax
Date: Sun, 5 Dec 2010 09:35:12 +0100 [thread overview]
Message-ID: <AANLkTimbhypTd6Y2v35SdV4qkH8tGtquc6Nt+N45oK4+@mail.gmail.com> (raw)
In-Reply-To: <AANLkTi=uB6NJ94yK63iDHopzCsbd_byvb2WKPM5KvvvU@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2220 bytes --]
I'm not sure I see the point of this long discussion between Lukasz and
Jacques.
It seems everybody agree that it is a good idea to explicitely quantify the
constructor-specific type variables.
The question Jacques raised is wether, when we write (| Foo of 'a . S : T)
or (| Foo : 'a . S -> T), the 'a is quantified on S only, or on both S and
T.
It think we all agree that, for semantical reasons, quantification should be
scoped over both S and T. However, the (of S : T) syntax does not make it
very obvious, and this should be rightfully considered as a defect of this
syntax.
I'm under the impression that your intense debate is about the edge case
where :
1. we don't use explicit quantification of constructor-specific variables
2. we reuse the type parameter variables in the type of a GADT constructor
(so they're implicitly shadowed by the implicit quantifications, or maybe
not)
If we reject possibly 1. (and ask for explicit quantification), all is well.
If you want to consider option 1., then I think the edge case 2. is evil and
shoud result in a warning.
On Sun, Dec 5, 2010 at 9:25 AM, Lukasz Stafiniak <lukstafi@gmail.com> wrote:
> On Sun, Dec 5, 2010 at 9:10 AM, Lukasz Stafiniak <lukstafi@gmail.com>
> wrote:
> >
> > shouldn't mean that Embed is "basically" Embed of int : int term. My
> > position is that if a type variable should be treated as local to a
> > branch, it should be explicitly quantified (using the dot notation,
> > for example "Ignore of 'a. 'a : int term", without any exceptions to
> > "existential" variables). And that the patterns
> >
> > type X =
> > | Branch of Y
> >
> > and
> >
> > type X =
> > | Branch of Y : X
> >
> > should be equivalent (where X could for example be 'a term).
>
> To clarify again: modulo variable capture! That is, the pattern
>
> > type X =
> > | Branch of 'a. Y : X
>
> will be different (unless 'a is not used in Y nor X).
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
[-- Attachment #2: Type: text/html, Size: 3263 bytes --]
next prev parent reply other threads:[~2010-12-05 8:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-04 19:25 Jacques Le Normand
2010-12-04 19:36 ` [Caml-list] " gasche
2010-12-04 19:39 ` Basile Starynkevitch
2010-12-04 19:41 ` Lukasz Stafiniak
2010-12-04 20:14 ` Jacques Le Normand
2010-12-04 20:22 ` Lukasz Stafiniak
2010-12-04 20:54 ` Jacques Le Normand
2010-12-04 21:00 ` Lukasz Stafiniak
2010-12-04 21:06 ` Jacques Le Normand
2010-12-05 8:10 ` Lukasz Stafiniak
2010-12-05 8:16 ` Lukasz Stafiniak
2010-12-05 8:25 ` Lukasz Stafiniak
2010-12-05 8:35 ` bluestorm [this message]
2010-12-06 0:21 ` Jacques Garrigue
[not found] <1245532236.1431213.1291490707868.JavaMail.root@zmbs3.inria.fr>
2010-12-06 9:11 ` Daniel de Rauglaudre
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=AANLkTimbhypTd6Y2v35SdV4qkH8tGtquc6Nt+N45oK4+@mail.gmail.com \
--to=bluestorm.dylc@gmail.com \
--cc=caml-list@yquem.inria.fr \
--cc=lukstafi@gmail.com \
--cc=rathereasy@gmail.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