Version 3 (modified by nomeata, 5 years ago) (diff)

Split of io and foreign

Splitting base

In a thread on glasglow-haskell-users in February some ideas about splitting base in smaller components were floating around. This wiki page tries to assemble ideas on how to re-group the modules.

The following is a list of all modules in Base, with a suggested re-grouping. Whether this makes sense WRT interdependencies has not yet been verified:


One package for all standard ADTs (Bool, [], Maybe...) and other pure definitions that are expected to work even with strange targets.

Question: Do we want this to include Int and Integer? It is required for, e.g. length, but already includes assumptions about the target. But probably they’d need to go in here as well.

Question: Any reason to keep Char and String separate? Maybe the requirement on the unicode data? Presumably there are interesting targets that do not need String (embedded devices), but what about functions like error?


Everything related to IO as we know it.


Lots of packages surely do not need anything from the FFI, so put that in a package of its own.