coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Théo Zimmermann <theo AT irif.fr>
- To: Coq Club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] option to disable partially qualified Require Imports
- Date: Sat, 19 Sep 2020 11:42:40 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=theo AT irif.fr; spf=Pass smtp.mailfrom=theo AT irif.fr; spf=None smtp.helo=postmaster AT korolev.univ-paris7.fr
- Ironport-phdr: 9a23:hCwF5BPbYj9FMTzs4Uol6mtUPXoX/o7sNwtQ0KIMzox0I//+rarrMEGX3/hxlliBBdydt6sbzbKG+PmwESxYuNDd6S5EKMQNHzY+yuwu1zQ6B8CEDUCpZNXLVAcdWPp4aVl+4nugOlJUEsutL3fbo3m18CJAUk6nbVk9Kev6AJPdgNqq3O6u5ZLTfx9IhD2gar9uMRm6twrcutQUjId4Nqo8yRTFrmZLdu9LwW9kOU+fkwzz68ut/ZNv6Thct+4k+8VdTaj0YqM0QKBCAj87KW41/srrtRfCTQuL+HQRV3gdnwRLDQbY8hz0R4/9vSTmuOVz3imaJtD2QqsvWTu+9adrSQTnhzkBOjUk7WzYkM1wjKZcoBK8uxxyxpPfbY+JOPZieK7WYMgXTnRdUMlPSyNBA5u8b4oRAOoHIeZYtJT2q18XoRejGQWgGObjxzlVjXH0wKI6yfwsHg7I3AMiH9wAvnfaosjrOqgOXu6417XIzSzZYv9KxTvx9IrFfxY8qv+MR7Jwds/RxFExGQPFlFKQrpTqMDCU1uQItmiU8fBgVee1hG4hrQF6vz+ixtssiobXgYIY0VHE9T94wIY7P9G4RlR7bMeiHZBNuC6UK5F4Tdk+Q2F0pik60LsGtIa7ciQXzJkqwxDRZvyHfoWH4x/uSuifLDl3iX55er+ymxK//VS+x+D4VsS50VhEojRLn9fCqHwAyh3e5MiaRvZy+EqqxDiB1wfW6u5eIEA0k7LWK58nwr4ql5ocq17PHiHsmEnug6+Wd1kk+ui16+v8eLnpupicN4pyhwrjMaougtSyDfk8PwUBRWSX5+Sx2bL58UD4XblGlOA6n6favZzCO8gXuqq0DxVW34sj8RqzEjar3dYCkXQHI19Ifg+MgZLzNFHUOv/4CO+yg1SynzdvwPDLJr7hApLXLnjElLfuY6h951RByAo1zNBf+YtYCqkbL/LpW0/xr97VAgU3Mwyu2+rnCdN92Z0CWW+XH6OUNKzfvUWW6u8vLOSAfo4YtCvnJ/Q46fPjjmc1mVoHcqmo2ZsXZmq4HvNjI0iBfXrsgskOEWARswo/VuzqiVOCXSRdZ3aoR648/C00CJq6DYffQYCgmKCO3CCiHpFPem9GDk2MHmzzeoWfW/YMbTqSLdV7njwFU7ihUY4h2gu0uA/00bo0ZtbTrwYfrNrI0MV/r7nYkgh3/jhpBeyc1XuMRid6hDVbaSUx2fVDoc16/WWC1K11mflRE9obs+9JXwASNITdwap0EYahCUr6Yt6VRQP+EZ2dCjYrQ4d0modWOhsvK5CZlhnGmhGSLfoVmriMXsBm8aXG2Hz8OYBgzXfYkbEolVg9HY1BLz/+3/Itx03oH4fM1n6hueOyb61Nji/X9WnFw3Dc5BgJAj41ar3MWDUkXmWTqN344k3YSLr/W7U9MwUHx9TQc6Y=
Since the module system was mentioned in this thread, and it was
remarked that it is both very powerful and hard to learn because you
basically need to know the background and it is not sufficiently
documented in Coq's own documentation, I'll take the opportunity to
advertise the fact that in 8.12, we have consolidated the
documentation of modules in a single place
https://coq.inria.fr/refman/language/core/modules.html (without
changing much of the content) and it would be a good time for someone
motivated and who appreciates and understands Coq's module system to
propose a partial rewrite of this documentation. As it is mentioned on
this page
https://github.com/coq/coq/wiki/Refman-improvements-in-8.12-and-beyond,
it needs, at the very least "complete proofreading, more explanations
about Inline, possibly more examples".
Then, back to the original topic, it was noticed that there already
are a couple of issues related to this:
- https://github.com/coq/coq/issues/9839
- https://github.com/coq/coq/issues/11124
So perhaps those can be commented on with additional hindsight,
instead of creating new ones.
Le sam. 19 sept. 2020 à 04:32, Jeremy Dawson
<Jeremy.Dawson AT anu.edu.au> a écrit :
>
>
>
> On 19/9/20 1:01 am, Guillaume Melquiond wrote:
> > Le 18/09/2020 à 16:46, Ralf Jung a écrit :
> >> (Probably the
> >> language designer had a good reason and this was solving a concrete
> >> problem, but
> >> putting the blame on the library is just unfair. And you haven't argued
> >> for why
> >> Coq's semantics make any sense, either.)
> > The reason is the standard library of Coq. It is important to understand
> > how painful it would be to use if Imports had to be fully qualified.
> > Here is a quiz for you. Which of the following are correct?
> >
> > 1.a Require Coq.List.List.
> > 1.b Require Coq.Lists.List.
>
> If the Coq module system really were based to a significant extent on
> the SML module system, surely the answer would be both are correct, with
> a trivial amount of extra code. I think the code would look something
> like this
>
> structure Coq = struct
> structure List = struct
> <the stuff in List>
> end ; (* structure List *)
> structure Lists = List ;
> (* or, if that does more than you want
> structure Lists = struct
> structure List = List.List ;
> end ; (* structure Lists *)
> end ; (* structure Coq *)
>
> One of the problems, as I understood it (accepting that it seems so
> bizarre that I might well be mistaken) is that to compile a Coq source
> file, you have to know where in the logical hierarchy of logical paths
> it is going to be used. Which is certainly not something I've
> experienced in 25 years using SML (though this, admittedly, would
> potentially vary between SML implementations).
>
> Jeremy
>
- Re: [Coq-Club] option to disable partially qualified Require Imports, (continued)
- Re: [Coq-Club] option to disable partially qualified Require Imports, Ralf Jung, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Andrew Appel, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Andrew Appel, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Ralf Jung, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Gaëtan Gilbert, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Guillaume Melquiond, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Ralf Jung, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Guillaume Melquiond, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, jonikelee AT gmail.com, 09/18/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Jeremy Dawson, 09/19/2020
- Re: [Coq-Club] option to disable partially qualified Require Imports, Théo Zimmermann, 09/19/2020
Archive powered by MHonArc 2.6.19+.