<p dir="ltr">Apologies if this question's already been discussed here, but have there been any discussions about switching the meanings of the : and :: operators? The rationale here is, of course, that :: is (probably, beware of anecdata) used a lot more than : is.</p>
<p dir="ltr">Obviously this would have the effect of breaking essentially every module ever written if it were done "automatically", but could there not be something akin to what -XDataKinds did for the * kind?</p>
<p dir="ltr">I don't genuinely expect this to ever happen, and I can't exactly defend the headache this would pose for comparatively little gain (including having to check the file header if not all your code sticks to one convention), but it would still, well, be really nice. I've been doing some type-level stuff for a while using Type instead of *, and it's caused less friction than I expected there to be. As a logical extension of this, it seems like a :/:: replacement might improve ergonomics more than a little as we move towards full Dependent Haskell.</p>
<p dir="ltr">Soham</p>
<br><div class="gmail_quote"><div dir="ltr">On Wed, May 17, 2017, 17:57  <<a href="mailto:haskell-prime-request@haskell.org">haskell-prime-request@haskell.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send Haskell-prime mailing list submissions to<br>
        <a href="mailto:haskell-prime@haskell.org" target="_blank">haskell-prime@haskell.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:haskell-prime-request@haskell.org" target="_blank">haskell-prime-request@haskell.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:haskell-prime-owner@haskell.org" target="_blank">haskell-prime-owner@haskell.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Haskell-prime digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1. Re: Default module header `module Main where` (Matthias Fischmann)<br>
   2. Re: Default module header `module Main where` (Iavor Diatchki)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Tue, 16 May 2017 21:40:49 +0200<br>
From: Matthias Fischmann <<a href="mailto:mf@zerobuzz.net" target="_blank">mf@zerobuzz.net</a>><br>
To: Adam Bergmark <<a href="mailto:adam@bergmark.nl" target="_blank">adam@bergmark.nl</a>><br>
Cc: <a href="mailto:haskell-prime@haskell.org" target="_blank">haskell-prime@haskell.org</a><br>
Subject: Re: Default module header `module Main where`<br>
Message-ID: <20170516194049.GX1508@localhost.localdomain><br>
Content-Type: text/plain; charset=utf-8<br>
<br>
<br>
you're inside the module, so you have access to all top-level<br>
bindings, not just to the export list.<br>
<br>
the issue with the implicit `module Main(main) where` is that it<br>
errors if main is not defined, even though that's a perfectly harmless<br>
situation.<br>
<br>
(i hope i got the question right?)<br>
<br>
<br>
On Tue, May 16, 2017 at 05:53:17PM +0000, Adam Bergmark wrote:<br>
> Date: Tue, 16 May 2017 17:53:17 +0000<br>
> From: Adam Bergmark <<a href="mailto:adam@bergmark.nl" target="_blank">adam@bergmark.nl</a>><br>
> To: José Manuel Calderón Trilla <jmct@jmct.cc>, <a href="mailto:haskell-prime@haskell.org" target="_blank">haskell-prime@haskell.org</a><br>
> Subject: Re: Default module header `module Main where`<br>
><br>
> GHCIs current behavior seems inconsistent with this, why is foo accessible<br>
> and why don't I get an unused warning like i do if i have an explicit<br>
> `module Main (main) where`?<br>
><br>
> ```<br>
> $ cat Main.hs<br>
> main :: IO ()<br>
> main = pure ()<br>
><br>
> foo :: Int<br>
> foo = 1<br>
><br>
> $ ghci Main.hs -Wall<br>
> GHCi, version 8.0.2: <a href="http://www.haskell.org/ghc/" rel="noreferrer" target="_blank">http://www.haskell.org/ghc/</a>  :? for help<br>
> Loaded GHCi configuration from /Users/adam.bergmark/.ghci<br>
> [1 of 1] Compiling Main             ( Main.hs, interpreted )<br>
> Ok, modules loaded: Main.<br>
><br>
> λ foo<br>
> 1<br>
> ```<br>
><br>
> On Tue, 16 May 2017 at 19:00 José Manuel Calderón Trilla <jmct@jmct.cc><br>
> wrote:<br>
><br>
> > Agreed, this sounds sensible.<br>
> ><br>
> > Can anyone think of any unintended consequences?<br>
> ><br>
> > -Jose<br>
> ><br>
> > On Tue, May 16, 2017, at 09:50 AM, Iavor Diatchki wrote:<br>
> ><br>
> > That seems fairly reasonable to me.<br>
> ><br>
> > -Iavor<br>
> ><br>
> > On Tue, May 16, 2017 at 7:18 AM, Joachim Breitner <<br>
> > <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>> wrote:<br>
> ><br>
> > Hi,<br>
> ><br>
> > a very small proposal to be considered for Haskell':<br>
> ><br>
> > Currently, the report states<br>
> ><br>
> >     An abbreviated form of module, consisting only of the module body,<br>
> >     is permitted. If this is used, the header is assumed to be ‘module<br>
> >     Main(main) where’.<br>
> ><br>
> > I propose to change that to<br>
> ><br>
> >     An abbreviated form of module, consisting only of the module body,<br>
> >     is permitted. If this is used, the header is assumed to be ‘module<br>
> >     Main where’.<br>
> ><br>
> > The rationale is that a main-less main module is still useful, e.g.<br>
> > when you are working a lot in GHCi, and offload a few extensions to a<br>
> > separate file. Currently, tools like hdevtools will complain about a<br>
> > missing main function when editing such a file.<br>
> ><br>
> > It would also work better with GHC’s -main-is flag, and avoid problems<br>
> > like the one described in <a href="https://ghc.haskell.org/trac/ghc/ticket/13704" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/13704</a><br>
> ><br>
> ><br>
> > I don’t see any downsides. When compiling to a binary, implementations<br>
> > are still able to detect that a Main module is not imported by any<br>
> > other module and only the main function is used, and optimize as if<br>
> > only main were exported.<br>
> ><br>
> > Greetings,<br>
> > Joachim<br>
> ><br>
> ><br>
> ><br>
> > --<br>
> > Joachim “nomeata” Breitner<br>
> >   <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a> • <a href="https://www.joachim-breitner.de/" rel="noreferrer" target="_blank">https://www.joachim-breitner.de/</a><br>
> >   XMPP: <a href="mailto:nomeata@joachim-breitner.de" target="_blank">nomeata@joachim-breitner.de</a> • OpenPGP-Key: 0xF0FBF51F<br>
> >   Debian Developer: <a href="mailto:nomeata@debian.org" target="_blank">nomeata@debian.org</a><br>
> > _______________________________________________<br>
> > Haskell-prime mailing list<br>
> > <a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
> ><br>
> > *_______________________________________________*<br>
> > Haskell-prime mailing list<br>
> > <a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
> ><br>
> ><br>
> > _______________________________________________<br>
> > Haskell-prime mailing list<br>
> > <a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
> > <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
> ><br>
<br>
> _______________________________________________<br>
> Haskell-prime mailing list<br>
> <a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
<br>
<br>
--<br>
<a href="https://zerobuzz.net/" rel="noreferrer" target="_blank">https://zerobuzz.net/</a><br>
<a href="mailto:mf@zerobuzz.net" target="_blank">mf@zerobuzz.net</a><br>
+49 179 7733 223<br>
<br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Tue, 16 May 2017 13:25:16 -0700<br>
From: Iavor Diatchki <<a href="mailto:iavor.diatchki@gmail.com" target="_blank">iavor.diatchki@gmail.com</a>><br>
To: Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>><br>
Cc: "<a href="mailto:haskell-prime@haskell.org" target="_blank">haskell-prime@haskell.org</a> Prime" <<a href="mailto:haskell-prime@haskell.org" target="_blank">haskell-prime@haskell.org</a>><br>
Subject: Re: Default module header `module Main where`<br>
Message-ID:<br>
        <CAGK9nupOZ4a84V+=<a href="mailto:sjWnSafi_peu9nzpvxE5dpeAekDdwsxRfA@mail.gmail.com" target="_blank">sjWnSafi_peu9nzpvxE5dpeAekDdwsxRfA@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
One potential difference between the two is that the current behavior<br>
allows the `Main` module to import `main` from another module, while the<br>
new behavior would fail in that case.<br>
<br>
For example, a file that has only a single line:<br>
<br>
    import SomeOtherModule(main)<br>
<br>
This still seems like a fairly unusual corner case (with an obvious work<br>
around), so I don't think it matters much, but I thought I'd mention it so<br>
that we are aware of it.<br>
<br>
<br>
<br>
<br>
<br>
<br>
On Tue, May 16, 2017 at 7:18 AM, Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a>><br>
wrote:<br>
<br>
> Hi,<br>
><br>
> a very small proposal to be considered for Haskell':<br>
><br>
> Currently, the report states<br>
><br>
>     An abbreviated form of module, consisting only of the module body,<br>
>     is permitted. If this is used, the header is assumed to be ‘module<br>
>     Main(main) where’.<br>
><br>
> I propose to change that to<br>
><br>
>     An abbreviated form of module, consisting only of the module body,<br>
>     is permitted. If this is used, the header is assumed to be ‘module<br>
>     Main where’.<br>
><br>
> The rationale is that a main-less main module is still useful, e.g.<br>
> when you are working a lot in GHCi, and offload a few extensions to a<br>
> separate file. Currently, tools like hdevtools will complain about a<br>
> missing main function when editing such a file.<br>
><br>
> It would also work better with GHC’s -main-is flag, and avoid problems<br>
> like the one described in <a href="https://ghc.haskell.org/trac/ghc/ticket/13704" rel="noreferrer" target="_blank">https://ghc.haskell.org/trac/ghc/ticket/13704</a><br>
><br>
><br>
> I don’t see any downsides. When compiling to a binary, implementations<br>
> are still able to detect that a Main module is not imported by any<br>
> other module and only the main function is used, and optimize as if<br>
> only main were exported.<br>
><br>
> Greetings,<br>
> Joachim<br>
><br>
><br>
><br>
> --<br>
> Joachim “nomeata” Breitner<br>
>   <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a> • <a href="https://www.joachim-breitner.de/" rel="noreferrer" target="_blank">https://www.joachim-breitner.de/</a><br>
>   XMPP: <a href="mailto:nomeata@joachim-breitner.de" target="_blank">nomeata@joachim-breitner.de</a> • OpenPGP-Key: 0xF0FBF51F<br>
>   Debian Developer: <a href="mailto:nomeata@debian.org" target="_blank">nomeata@debian.org</a><br>
> _______________________________________________<br>
> Haskell-prime mailing list<br>
> <a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
><br>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://mail.haskell.org/pipermail/haskell-prime/attachments/20170516/0c22e88d/attachment-0001.html" rel="noreferrer" target="_blank">http://mail.haskell.org/pipermail/haskell-prime/attachments/20170516/0c22e88d/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
Haskell-prime mailing list<br>
<a href="mailto:Haskell-prime@haskell.org" target="_blank">Haskell-prime@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Haskell-prime Digest, Vol 104, Issue 2<br>
*********************************************<br>
</blockquote></div>