Remove libraries from the report (to the greatest extent possible)
There is a tension between having the ability to fix and evolve the libraries, and people wanting to write books on how to use Haskell' (without having to define (+) and map etc themselves!).
We've been lucky thus far that having the hierarchial libraries
completely disjoint with the report has meant that we have been able add
to and alter things even in the base package without breaking anything
assuming Haskell 98. We haven't had to worry about clashing with a user's
Data.Function
module as the Haskell 98 namespace is flat, nor worry whether
adding an on
function will cause ambiguous-import errors in someone's
Haskell 98 program.
We still get the occasional person in #haskell asking why they can't
find the fromInt
their book talks about, and I think that was probably
published in the 90s?
This proposal is that books should be about
Haskell', base 3.0.* and mtl 2.1.*
and Haskell' should say pretty much nothing about libraries. This gives book writers the ability to target something (and even if newer library versions come out, the old ones will still be available; old branches can even be maintained so they stay working with newer implementations if necessary) while still letting us remain agile.
The report will probably need to continue to use things like head
in
non-normative sections such as examples.
There will probably also need to be a package defined by Haskell' that includes things like seq and the derivable classes. It might also define IO primitives etc,
but these might be better left unspecified, with the (portable) io
package depending on $impl-io
(e.g. ghc-io
) which defines suitable primitives for the implementation.
Trac metadata
Trac field | Value |
---|---|
Version | |
Type | Task |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | HaskellPrime |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |