
Malcolm Wallace wrote:
Simon Marlow
wrote: Isn't it just a bug that these functions are not implemented by other compilers?
Yes and no. Of course we could implement them. But I for one wasn't even aware that they existed in the API. I don't know when they were added, or by whom, and I may not even be sure what they are supposed to do. For instance, you mention not opening a file if it already exists, but the Haddock does not say anything about that.
They were added in Jan 2005 by Krasimir: Thu Jan 6 19:35:07 GMT 2005 krasimir * [project @ 2005-01-06 19:35:05 by krasimir] add temporary files API I agree the documentation is lacking and should be improved. The reason they were added to System.IO, I suspect is because the alternative is worse: System.IO.Extras, GHC.IO.Extras or something else. Apart from being uninformative names, there's nothing compiler-dependent about these functions, and our naming guidelines forbid module names that don't have anything to do with functionality. The intention was that the missing implementations would appear in due course. Perhaps as a first step, rather than just omitting them from the export list where they aren't supported, they should be replaced by dummy definitions that emit a helpful error message? I suspect there are many such examples in the base package, FWIW. nch98 doesn't implement various bits of System.IO.Error, for example. Hugs has a very different version of Control.Concurrent. Cheers, Simon