
I tend to agree with this. The functionality should be primary in any naming scheme. The third category (magic required) can also (sometimes) be important to an end-user - they need to know whether a library can be used portably across compilers, but that is all. I guess we might therefore want to consider moving Foreign from Haskell.Extensions.Foreign to Haskell.Foreign whilst keeping (for instance) Haskell.Extensions.Concurrent where it is, because it is only available in ghc. Or come to that, maybe the latter really belongs in GHC.Concurrent
Actually Hugs has a portable implementation of Concurrent, which nhc could use too. You only need runtime system support if you plan to implement preemptive scheduling, which isn't a requirement for the Concurrent library, although it may be a requirement for certain applications. Cheers, Simon