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
Int
where negative numbers make no sense (e.g. lengths of things) - Classes like
Num
with no clear laws. - Partiality, especially in methods like
*1
inFoldable
and withEnum
- Anything steering towards
unsafeInterleaveIO
-
String
stuff 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.