
On Wed, Mar 17, 2010 at 9:48 AM, Simon Marlow
The discussion didn't result in a concrete proposal, but there was general agreement that we should remove
Directory System Time Locale CPUTime Random
and update the others to use hierarchical names:
1. Ratio keep as Data.Ratio 2. Complex keep as Data.Complex 3. Numeric keep as Numeric (?) 4. Ix keep as Data.Ix 5. Array keep as Data.Array 6. List keep as Data.List 7. Maybe keep as Data.Maybe 8. Char keep as Data.Char 9. Monad keep as Control.Monad 10. IO keep as System.IO
and the FFI libraries would be added as
CError -> Foreign.C.Error CForeign -> Foreign.C CString -> Foreign.C.C.String CTypes -> Foreign.C.Types ForeignPtr -> Foreign.ForeignPtr Int -> Data.Int MarshalAlloc -> Foreign.Marshal.Alloc MarshalArray -> Foreign.Marshal.Array MarshalError -> Foreign.Marshal.Error MarshalUtils -> Foreign.Marshal.Utils StablePtr -> Foreign.StablePtr Storable -> Foreign.Storable Word -> Data.Word
(this proposal wasn't discussed publicly, unfortunately. I think that was an oversight.)
I was actually planning to look at doing this during the H2010 report update. However, updating the libraries in the report to use the hierarchical names actually gives us a slight problem, in that we then have to provide those modules with exactly those interfaces for ever, presumably via some well-known package. The module names overlap with base, so we'd have to do some package reorganisation. Things could get painful really fast. I'm tempted to not do this in H2010, but defer it until we've really thought about how to manage the transition and future updates.
I would like to remove the old superseded modules though: Directory, Time, System, Random, Locale, CPUTime. That would be an easy change, and we can provide a haskell2010 package exporting just the remaining modules.
Cheers, Simon
How goes the removal of those old modules? -- gwern