The premise of 'basic-prelude' is that there are a lot of very commonly desired features missing from the standard 'Prelude', such as commonly used operators ('<$>' and '>=>', for instance) and imports for common datatypes (e.g., 'ByteString' and 'Vector'). At the same time, there are lots of other components which are more debatable, such as providing polymorphic versions of common functions.
So 'basic-prelude' is intended to give a common foundation for a number of alternate preludes. The package provides two modules: 'CorePrelude' provides the common ground for other preludes to build on top of, while 'BasicPrelude' exports 'CorePrelude' together with commonly used list functions to provide a drop-in replacement for the standard 'Prelude'.
Users wishing to have an improved 'Prelude' can use 'BasicPrelude'. Developers wishing to create a new prelude should use 'CorePrelude'.