-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
Following up from the presentation at CUDW, some TODOs:
- Type annotations in OCaml and Ltac2 (done)
- Aligning code side by side to show similarities
- Implementing other examples besides
autoinductin the other metalanguages - Release and crowdsource more solutions? Could be like POPLmark Challenge for metalanguages IMO
Talia's Notes:
- By far the biggest barrier to plugin development is setup; it would be very nice to have a plugin generator for initial setup.
- In OCaml, it's very nice to have access to maps and folds over the subterm structure. It would be nice to have map/fold over terms exposed in other metalanguages if it isn't already (though I do wonder what the expressiveness of this is relative to
[match!]and so on). - I find it easier to organize automation behind interfaces in OCaml so that I can reuse utility functions; has thought gone into this for other metalanguages? In particular, I like being able to put utility functions behind nice
.mlifiles and then just reuse them; I also like having lots of higher-order functions. Examples: 1 2 3 4 - I wish I could write OCaml inline right in a Coq file. This is a definite plus of all of the other metalanguages.
- I like being able to swap out different notions of equality and so on trivially in OCaml, and it'd be cool to be able to do that more easily in other metalanguages.
- Ltac is so limited; fixed numbers of arguments are sad.
- The OCaml plugin API changes a lot, so one major barrier to plugin development is that the burden of change is difficult (even for things like how to set up plugins, which confused me for this particular development). This is a plus of other metalanguages. (One thing we can track here in this repository is how much we need to change these over time.)
- Metacoq turned my computer into a furnace when I installed it, as a heads up.
- I was personally really impressed with the Ltac2 version and how similar it feels to the OCaml one.
Not (yet) covered by the autoinduct example, but relevant to writing automation:
- Caching for efficiency
- Fancier equalities and unification
- Nicely organizing automation in libraries
- Burden of change (discussed but not yet encountered)
Metadata
Metadata
Assignees
Labels
No labels