And yet … The run-of-the-mill trickle of proposals on the libraries mailing list seems to consist only of adding things to base
: extra/specialised methods, optimising constraints on existing classes, tweaks to help performance. Progressively making base
more tangled and interdependent. Until somebody calls a halt.
What’s special about 'adding to base
’ that people are so keen on? To contra @michaelpj’s “Why Not?”: If you want a Bifoldable
to work across different releases of GHC-the-compiler
- Why not copy the source to
MyBifoldable
and use import/module naming to insulate yourself frombase
'sBifoldable
? Or - Why not put on Hackage as
NotbaseBifoldable
and ditto ditto. - Why not help yourself rather than waiting around wringing your hands that
base
is a mess (allegedly)?
OTOH, Bifoldable
hasn’t changed in the five years since it was added to base
. It hasn’t (so far) been a source of instability – despite its import Control.Applicative
(amongst others) and that’s import GHC.Prim
etc that (presumably) could never be moved out of base
or ghc-base
or ghc-internal-*
, depending how we skin the cat.
Control.Applicative
and GHC.Prim
have changed; if those changes have been a source of instability for Bifoldable
, no amount of reorganising base
will distance you from that import
.
So do you expect that by being in a blessed library named base
, it’s the GHC team’s responsibility to make Bifoldable
in release 9.10 compile and run unchanged under GHC-the-compiler release 9.12? Has anybody asked the already-overworked GHC team whether they have capacity to regression-test every release of GHC-the-compiler against the last three base
releases?
Or do you expect it to ‘just work’ without testing? Because why?
I’d call it “magical”: test a compiler release against a release of a library that hasn’t been developed yet. Please tell me when GHC produces that time machine. Oh! you mean when the library is developed, ask the GHC team to cast their mind back to the compiler-as-was-9-months-ago and regression-test.