Open antalsz opened 7 years ago
One possible new structure:
An hs-to-coq
repo containing hs-to-coq
, along with a couple of examples showing how to use the tool. These examples should be static – they're documentation. Possible examples:
Succs
?) that can be built without base
base
.A base-in-coq
repo containing just base
. Depends on hs-to-coq
A ghc-in-coq
repo containing our converted parts of GHC. Depends on hs-to-coq
and base-in-coq
.
Maybe a repo for the plugin, if it still seems useful.
I am in favor of removing the abandoned plugin and getting rid of the extra subdirectory.
Otherwise, I think it is far too early to do this. We are still in a change where we need to make changes that affect both the tool and all the developments (adding edits, changing how certain things are translated or named). Having to make highly coupled changes in independent repositories will cause great confusion and friction.
Also, the best test suite we have is … all of example
. They serve as regression test suite that we sorely need, otherwise changes to the code will break some of these, and will not be noticed much later.
Once we find, empirically, that most work on stuff in examples
can proceed without changes to the code, and that most changes to the code do not affect the examples
, then this becomes a viable and desirable goal. But unfortunately, we are not there yet…
(Note that for precisely this reason, GHC eventually moved testsuite/
and libraries/base
into the GHC repository – and that is a mature compiler…)
It might interesting, though, to think of a better way of managing the generated files in examples/ghc-base/lib
(and, maybe examples/ghc/lib
). They should be easily accessible without a GHC checkout, but having them in the repo is not ideal (although useful – I look at the diff to see what my changes to the code did).
One could put them in a git submodule which lives on a different branch of the same repository.
There's a lot going on in this repository:
hs-to-coq
conversion tool itselfbase
libraryIt would be nice to split this up into multiple repositories, because they're conceptually separate. The downside, of course, is that the examples depend on
base
which depends onhs-to-coq
.