Globbing support for mixins and rexported-modules
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
**Describe the bug**
Using backpack often requires using large large numbers of reexported-modules stanzas and mixins stanzas.
If you use a backpack package and that package produces 17 outputs in some namespace, I have to repeat myself 17 times in the output to rename it in the mixins statement, and another 17 times in the rexported-modules stanza.
If I then go to use that backpack package 17x on another than provides 17 definitions, I'm now stuck with 289, and the exponent keeps growing from there. I'm currently using a program to produce my cabal files. This is not "the Way".
I don't want to use a custom setup to produce the boilerplate, because @phadej will be mad at me, but also because it gets in the way of incremental recompilation in this mode, as I understand the world.
This is currently the biggest blocker I have to using backpack 'in bulk' in my code.
I'd like to be able to rename in the mixins statement on the provides/requires sides with a wildcard notation of some sort:
in a sort of Makefile-like vocabulary:
`consDefs (% as Foo.%) requires (% as Baz.%)`
or since lowercase identifiers aren't a thing:
`mixins: consDefs (x as Foo.x) requires (x as Baz.x)`
or
`mixins: consDefs (* as Foo.*) requires (* as Baz.*)`
which gives an option of allowing recursive globbing or not
`mixins: consDefs (** as Foo.**) requires (** as Baz.**)`
Similarly,
```
reexported-modules:
Foo.x as Bar.Internal.x
```
is practically required, as I have to re-export the things I get from all these bulk-work backpack modules.
options include using * and ** for recursive globbing or not. Other options are using something like a scheme like parameter pack syntax. I don't care what the syntax is, I just want _something_.
This would require cabal to be able to query a backpacked package for what signatures it has outstanding.
**To Reproduce**
Try to write large backpacked packages.
**Alternatives explored**
I am currently generating the entire cabal file with software, like I do with the `gl` package.
Contributor guide
Assessment
This issue has not been assessed yet.