... | ... | @@ -4,7 +4,7 @@ |
|
|
In a [ thread on glasglow-haskell-users](http://www.haskell.org/pipermail/glasgow-haskell-users/2013-February/023764.html) 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:
|
|
|
This has been discussed before, e.g. in \[2008 [ http://www.haskell.org/pipermail/libraries/2008-August/010543.html](http://www.haskell.org/pipermail/libraries/2008-August/010543.html)\].
|
|
|
|
|
|
### Non-Obvious interdependencies
|
|
|
|
... | ... | @@ -16,7 +16,7 @@ This is a list of interdependencies between seemingly unrelated parts that need |
|
|
- Exceptions pull in `Typeable`
|
|
|
- `Typeable` pulls in `GHC.Fingerprint`
|
|
|
- GHC.Fingerprint pulls in `Foreign` and `IO` (but could be replaced by a pure implementation)
|
|
|
- The Monad instance of `IO` calls `failIO`, which creates an `IOException`, which has fields for handles and devices, and hence pulls in some `Foreign` stuff and some file-related `IO`, preventing the creation of a clean base-io package.
|
|
|
- The Monad instance of `IO` calls `failIO`, which creates an `IOException`, which has fields for handles and devices, and hence pulls in some `Foreign` stuff and some file-related `IO`, preventing the creation of a clean base-io package. There exists a [ somewhat backwards compatible work-around](http://www.haskell.org/pipermail/glasgow-haskell-users/2013-February/023796.html).
|
|
|
|
|
|
### Other issues
|
|
|
|
... | ... | @@ -33,7 +33,4 @@ This is a list of interdependencies between seemingly unrelated parts that need |
|
|
### First attempt
|
|
|
|
|
|
|
|
|
Joachim has started a first attempt to pull stuff out of the bottom of base; these chunks often contain more than initially intended:
|
|
|
|
|
|
- [ base-pure](https://github.com/nomeata/packages-base/tree/base-pure) Basic stuff without `IO`, `Foreign` or floating point arithmetic. Requires reimplementing `GHC.Fingerprint` without using FFI (or at least without using FFI types and without `IO`).
|
|
|
- [ base-io](https://github.com/nomeata/packages-base/tree/base-io) (uses base-pure). The `IO` and `ST` monads. Unfortunately pulls in `Handle`-related stuff via `IOException`. |
|
|
Joachim has started a first attempt to pull stuff out of the bottom of base. See [ https://github.com/nomeata/packages-base/blob/base-split/README.md](https://github.com/nomeata/packages-base/blob/base-split/README.md) for an overview of progress and a description of changes. Use `git clone git://github.com/nomeata/packages-base.git; git checkout base-split` to experiment. |