
Simon Marlow wrote:
I see the point - to clearly separate all the unsafe stuff - but there are other categories of things that we might also want to separate (e.g. Haskell 98 vs. non-Haskell 98, portable vs. non-portable, deprecated vs. current...). We made the decision a long time ago that the hierarchy should categorise by functionality rather than any other property of modules. There are exceptions (System.Posix), but it's still a good rule of thumb.
In that case, shouldn't unsafeCoerce be in Data.Unsafe? It seems odd to have a Unsafe.* hierarchy if it's not going to have all the unsafe functions. Unsafety is a bit different from the other categories. Deprecated functions by definition shouldn't be moved, only deleted. Portability changes, and so does standards-compliance, so there's no need to move such functions around. -- Ashley Yakeley