{"action":"created","issue":{"url":"https://api.github.com/repos/coq/coq/issues/7080","repository_url":"https://api.github.com/repos/coq/coq","labels_url":"https://api.github.com/repos/coq/coq/issues/7080/labels{/name}","comments_url":"https://api.github.com/repos/coq/coq/issues/7080/comments","events_url":"https://api.github.com/repos/coq/coq/issues/7080/events","html_url":"https://github.com/coq/coq/pull/7080","id":308909233,"number":7080,"title":"Swapping Context and Constr and defining declarations on constr in Constr","user":{"login":"herbelin","id":460771,"avatar_url":"https://avatars1.githubusercontent.com/u/460771?v=4","gravatar_id":"","url":"https://api.github.com/users/herbelin","html_url":"https://github.com/herbelin","followers_url":"https://api.github.com/users/herbelin/followers","following_url":"https://api.github.com/users/herbelin/following{/other_user}","gists_url":"https://api.github.com/users/herbelin/gists{/gist_id}","starred_url":"https://api.github.com/users/herbelin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/herbelin/subscriptions","organizations_url":"https://api.github.com/users/herbelin/orgs","repos_url":"https://api.github.com/users/herbelin/repos","events_url":"https://api.github.com/users/herbelin/events{/privacy}","received_events_url":"https://api.github.com/users/herbelin/received_events","type":"User","site_admin":false},"labels":[{"id":733571551,"url":"https://api.github.com/repos/coq/coq/labels/needs:%20overlay","name":"needs: overlay","color":"0f1170","default":false},{"id":723364268,"url":"https://api.github.com/repos/coq/coq/labels/part:%20kernel","name":"part: kernel","color":"dddddd","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/coq/coq/milestones/7","html_url":"https://github.com/coq/coq/milestone/7","labels_url":"https://api.github.com/repos/coq/coq/milestones/7/labels","id":2647743,"number":7,"title":"8.9+beta1","description":"The date of the feature freeze has not been announced yet.","creator":{"login":"Zimmi48","id":1108325,"avatar_url":"https://avatars2.githubusercontent.com/u/1108325?v=4","gravatar_id":"","url":"https://api.github.com/users/Zimmi48","html_url":"https://github.com/Zimmi48","followers_url":"https://api.github.com/users/Zimmi48/followers","following_url":"https://api.github.com/users/Zimmi48/following{/other_user}","gists_url":"https://api.github.com/users/Zimmi48/gists{/gist_id}","starred_url":"https://api.github.com/users/Zimmi48/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Zimmi48/subscriptions","organizations_url":"https://api.github.com/users/Zimmi48/orgs","repos_url":"https://api.github.com/users/Zimmi48/repos","events_url":"https://api.github.com/users/Zimmi48/events{/privacy}","received_events_url":"https://api.github.com/users/Zimmi48/received_events","type":"User","site_admin":false},"open_issues":136,"closed_issues":64,"state":"open","created_at":"2017-07-18T15:03:25Z","updated_at":"2018-04-24T19:59:42Z","due_on":null,"closed_at":null},"comments":22,"created_at":"2018-03-27T10:23:07Z","updated_at":"2018-04-24T22:34:10Z","closed_at":null,"author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/coq/coq/pulls/7080","html_url":"https://github.com/coq/coq/pull/7080","diff_url":"https://github.com/coq/coq/pull/7080.diff","patch_url":"https://github.com/coq/coq/pull/7080.patch"},"body":"**Kind:** architecture\r\n\r\nThe motivation for this PR is to eventually be able to use contexts of declarations in the definition of the `Case` constructor of `constr` (as discussed in the last steps of CEP [#34](https://github.com/coq/ceps/pull/34)).\r\n\r\nIt can also be seen as moving `Context.Rel.Declaration.t` and the 5 other `Context.*.t` of `context.ml` (i.e. the instantiation of the generic `pt` to `constr`/`types`) to a place where they are less isolated that they became after the generalization of `Context` to support `EConstr`. With this move, `Context` becomes exclusively polymorphic.\r\n\r\nFrom the API point of view, this implies that `Constr` now includes `Context` and that the `t` types of `Context` are now only available in `Constr.Context.Rel.Declaration` and co and not any\r\nmore in `Context.Rel.Declaration`. So, more `open Constr` are explicitly needed (I hope this does not go against other ongoing design choices).\r\n\r\nThe inclusion of `Context` in `Constr` is done to the price of a pretty heavy boilerplate. Typically, I would just have wanted to be able to say:\r\n```\r\ninclude Context\r\n  extending Rel.Declaration with t = (constr, types) Rel.Declaration.pt\r\n  extending Rel with t = Declaration.t list\r\n  extending Named.Declaration with t = (constr, types) Named.Declaration.pt\r\n  extending Named with t = Named.Declaration.t list\r\n  extending Compacted.Declaration with t = (constr, types) Compacted.Declaration.pt\r\n  extending Compacted with t = Compacted.Declaration.t list\r\n```\r\nbut I did not find how to do it concisely.\r\n\r\n\r\n\r\n\r\n\r\nNote: I did not put a kind label. Maybe `redesign` is the closest one that I could found but it is not about a feature, it is purely architectural."},"comment":{"url":"https://api.github.com/repos/coq/coq/issues/comments/384101174","html_url":"https://github.com/coq/coq/pull/7080#issuecomment-384101174","issue_url":"https://api.github.com/repos/coq/coq/issues/7080","id":384101174,"user":{"login":"SkySkimmer","id":2461932,"avatar_url":"https://avatars1.githubusercontent.com/u/2461932?v=4","gravatar_id":"","url":"https://api.github.com/users/SkySkimmer","html_url":"https://github.com/SkySkimmer","followers_url":"https://api.github.com/users/SkySkimmer/followers","following_url":"https://api.github.com/users/SkySkimmer/following{/other_user}","gists_url":"https://api.github.com/users/SkySkimmer/gists{/gist_id}","starred_url":"https://api.github.com/users/SkySkimmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SkySkimmer/subscriptions","organizations_url":"https://api.github.com/users/SkySkimmer/orgs","repos_url":"https://api.github.com/users/SkySkimmer/repos","events_url":"https://api.github.com/users/SkySkimmer/events{/privacy}","received_events_url":"https://api.github.com/users/SkySkimmer/received_events","type":"User","site_admin":false},"created_at":"2018-04-24T22:34:09Z","updated_at":"2018-04-24T22:34:09Z","author_association":"CONTRIBUTOR","body":"Yes\n\nGaëtan Gilbert\n\nOn 25/04/2018 00:32, Hugo Herbelin wrote:\n> BIgger only means including context.ml in constr.ml. I'm eventually \n> adding a couple of new (canonical) combinators, thus making the kernel \n> bigger (*) but that's not the issue in this PR.\n> \n> (*) We cannot exclude that there are typos in these combinators, but, \n> morally, they should be mechanically generated from the structure of \n> terms, so there is no algorithmic nor logic-relevant issues with these \n> combinators.\n> \n> These new combinators (in #7109 <https://github.com/coq/coq/pull/7109>) \n> are not making the kernel a lot more fragile than say, using an \n> optimized implementation of |List.append| (the main risk I may see is \n> with rarer constructors like say |CoFIx| toegther with a complex \n> structure of binders, where a typo might get undetected by daily code).\n> \n> Moreover, it seems easier to me to visually inspect the regularity of \n> the code of these combinators than, say, to check that the optimized \n> imperative code of |List.append| has no problems in degenerate cases.\n> \n> @SkySkimmer <https://github.com/SkySkimmer>:\n> \n>     My preferred solution is that we don't have a copy of Context in\n>     Constr, we just have Constr.rel_context and don't bother with a\n>     deprecation phase.\n> \n> So, you mean as it is currently in the PR but without the |module| \n> extension stuff, and just a |Constr.rel_context| outside of the \n> |Context| name space?\n> \n> —\n> You are receiving this because you were mentioned.\n> Reply to this email directly, view it on GitHub \n> <https://github.com/coq/coq/pull/7080#issuecomment-384100842>, or mute \n> the thread \n> <https://github.com/notifications/unsubscribe-auth/ACWQ7O5arFdA5MoUFITrSgJfESKzU33Jks5tr6f7gaJpZM4S8qpk>.\n> \n"}}
{"actor":{"display_login":"SkySkimmer"}}