As to why do we want to change base in the first place:
- Obscure things in
GHC.*modules force a PVP breaking version number bump even if none of the main commonly-used stuff changed.
And also many different opinions:
- Too much
Intwhere negative numbers make no sense (e.g. lengths of things) - Classes like
Numwith no clear laws. - Partiality, especially in methods like
*1inFoldableand withEnum - Anything steering towards
unsafeInterleaveIO -
Stringstuff is too accessible - Stuff throwing synchronous exceptions is too accessible
These are opinions — you need not agree with them. But at the very least, even if we only add new features to the “main” parts of base and do nothing breaking, we still have the problems @sclv mentioned because GHC might have breaking changes, and people ought to be able to get new non-breaking base changes without GHC changes.