
On Monday 02 April 2007 14:41, Bulat Ziganshin wrote:
Hello Sven,
Monday, April 2, 2007, 4:21:47 PM, you wrote:
this means that these functions should be implemented in GHC.*, NHC.* and Hugs.* and only then System.IO may include interface function that will call one of them
I don't think that this will really solve portability issues, as we would still need #ifdefs in System.IO to import the right module.
yes, and this is standard practice. modules in base package should have compiler-independent interface, but not implementation
"standard" does not necessarily imply "good".
The general question is: Where do we want to solve these issues: Within the code or outside of it (i.e. in the build system)? Both approaches have pros and cons, but if we want to factor things out into the build system, we would need a System.IO.Impl module, which is specific to a Haskell implementation and outside base, but which has an implementation-independent API. Mixing both approaches only complicates things with no real benefit.
afaiu, this is not relevant in light of my remark?
It is relevant: Before joyfully moving things around modules, we should have a common and clear picture what we should aim for. Currently, I don't see this, so I object to ad hoc changes. Cheers, S.