
On Mon, May 2, 2011 at 2:26 AM, Ian Lynagh
But either way, this won't help the IO manager use the shared code, as it is in base. Personally I think breaking base up further is the right solution, including pulling most of the IO code out into its own package (you need to leavea little bit right at the bottom of the dependency hierarchy, so that you can define things like "error"), but that's had opposition in the past.
I think this is the way to go as well. Data structures (like Map) and simple data types (like Maybe) needs to be in the bottom of the hierarchy, so the rest of the libraries (i.e. base) can use them. I found it quite frustrating to make the I/O manager GHC specific, by e.g. changing all Data.Maybe to GHC.Maybe, when it could be compiler neutral. I also don't like to have to duplicate things like PSQ and IntMap. Johan