caml-list - the Caml user's mailing list
 help / Atom feed
From: Alain Frisch <alain.frisch@lexifi.com>
To: Gabriel Scherer <gabriel.scherer@gmail.com>
Cc: Andreas Rossberg <rossberg@mpi-sws.org>, caml users <caml-list@inria.fr>
Subject: Re: [Caml-list] Newbie comment on constructor syntax
Date: Mon, 9 Nov 2015 21:32:33 +0100
Message-ID: <564102E1.3060004@lexifi.com> (raw)
In-Reply-To: <CAPFanBHECWgqPkC-2Mjx28R_DgcEYtfjzQcpp-D75eCe+YzjDQ@mail.gmail.com>

On 09/11/2015 19:08, Gabriel Scherer wrote:
> If we gave a functional semantic to the unapplied constructor, then I
> think that good taste would mandate for the application of this
> function and the application of the constructor to be equivalent. This
> means that by choosing a tuple-taking function, we commit to the
> tuple-application syntax (that nobody likes), and that choosing a
> currified function creates an unpleasant inconsistency in the
> language.
>
> I don't know whether we could ever manage to transition to a currified
> syntax for constructors, but right now it is at least conceivable
> because the application syntax is just a concrete syntax choice, it
> does not affect typing. Turning unapplied constructor into a function
> (tuplified or currified) makes it a typing property, observable at
> specification boundaries: we cannot change it.

Making it easier to switch in the distant future to currified 
constructors does not seem a strong argument against improving the 
language now (especially reducing bad surprises for beginners).

The tuple-like syntax is not very much liked, but this is partly caused 
by the fact that arguments cannot be manipulated as real tuples.  With 
the proposed change, this argument goes away.

Moreover, *if* we ever wanted to switch to currified constructors, this 
would not be a purely syntactic rewriting anyway, even with the current 
language.  One would need to have access to constructor declarations to 
drive the rewriting process.  If you one allows oneself to get such 
information out of the type checker, doing the rewriting even in 
presence of the currently suggested changes would be possible as well 
(with extra wrapping/unwrapping).


Alain


>
> On Mon, Nov 9, 2015 at 6:33 PM, Alain Frisch <alain.frisch@lexifi.com> wrote:
>> On 09/11/2015 11:35, Andreas Rossberg wrote:
>>>
>>> Yes please, I would appreciate such sugar.
>>
>>
>> I've now submitted a cleaner implementation, working on both expressions and
>> patterns:
>>
>> https://github.com/ocaml/ocaml/pull/284
>>
>>> Even more I would appreciate
>>> generalising that to allowing constructors to be used as first-class
>>> expressions (i.e., unapplied "C" -> "fun (x1,...,xN) -> C (x1,...,xN)"
>>> when C is a constructor with arity > 0). I had to write some AST mapping
>>> code recently that would have vastly benefited from that.
>>
>>
>> This is not covered (and now, it could simply be "fun x -> C x" :-)).  I
>> don't see anything clever to be done on patterns for "unapplied
>> constructors", though.
>>
>>
>> Alain
>>
>>
>> --
>> Caml-list mailing list.  Subscription management and archives:
>> https://sympa.inria.fr/sympa/arc/caml-list
>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
>> Bug reports: http://caml.inria.fr/bin/caml-bugs

      parent reply index

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06  9:33 Soegtrop, Michael
2015-11-06 10:04 ` Nicolas Ojeda Bar
2015-11-06 10:31 ` Francois Berenger
2015-11-06 12:20   ` Soegtrop, Michael
2015-11-06 12:34     ` Gabriel Scherer
2015-11-06 13:09       ` Soegtrop, Michael
2015-11-06 14:10         ` Ashish Agarwal
2015-11-06 15:19           ` Soegtrop, Michael
2015-11-06 15:22             ` Ashish Agarwal
2015-11-21 17:24       ` [Caml-list] Notation for currying Hendrik Boom
2015-11-21 17:42         ` Gabriel Scherer
2015-11-21 18:06         ` David Rajchenbach-Teller
2015-11-21 18:56           ` Gabriel Scherer
2015-11-06 12:29 ` [Caml-list] Newbie comment on constructor syntax Jonas Jensen
2015-11-06 12:46   ` Soegtrop, Michael
2015-11-06 12:55     ` Gabriel Scherer
2015-11-08 21:17 ` Florian Weimer
2015-11-08 22:51   ` Norman Hardy
2015-11-09  6:27     ` Florian Weimer
2015-11-09 13:27       ` Stefan Monnier
2015-11-09  8:10     ` Soegtrop, Michael
2015-11-09 10:00       ` Hendrik Boom
2015-11-09 10:17       ` Alain Frisch
2015-11-09 10:35         ` Andreas Rossberg
2015-11-09 12:28           ` Alain Frisch
2015-11-09 17:33           ` Alain Frisch
2015-11-09 18:09             ` Gabriel Scherer
2015-11-09 18:16               ` Andreas Rossberg
2015-11-09 21:12                 ` Gabriel Scherer
2015-11-09 22:06                   ` Alain Frisch
2015-11-09 22:27                   ` Andreas Rossberg
2015-11-09 22:57                     ` Jeremy Yallop
2015-11-10  0:11                   ` Hendrik Boom
2015-11-10  8:27                   ` Soegtrop, Michael
2015-11-10 10:26                     ` Romain Bardou
2015-11-10 10:44                       ` Alain Frisch
2015-11-10 10:55                         ` Romain Bardou
2015-11-10 13:17                           ` Alain Frisch
2015-11-10 13:41                             ` Romain Bardou
2015-11-10 14:01                               ` Alain Frisch
2015-11-13 15:36                           ` Romain Bardou
2015-11-10 11:17                         ` Soegtrop, Michael
2015-11-10 14:11                     ` Hendrik Boom
2015-11-10 14:40                       ` immanuel litzroth
2015-11-10 15:30                       ` Soegtrop, Michael
2015-11-10 17:28                         ` Gerd Stolpmann
2015-11-09 20:32               ` Alain Frisch [this message]

Reply instructions:

You may reply publically 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=564102E1.3060004@lexifi.com \
    --to=alain.frisch@lexifi.com \
    --cc=caml-list@inria.fr \
    --cc=gabriel.scherer@gmail.com \
    --cc=rossberg@mpi-sws.org \
    /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

caml-list - the Caml user's mailing list

Archives are clonable: git clone --mirror https://inbox.ocaml.org/caml-list

AGPL code for this site: git clone https://public-inbox.org/ public-inbox