I thought that Maybe and Data.Maybe were distinct modules. Are they equivalent?
–
Adam CrumeMay 6 '12 at 21:31

1

@AdamCrume: Data.Maybe is pretty much a superset of the old Maybe module. If you compare the docs, you can see that the main difference is that Data.Maybe exports more instances.
–
hammarMay 6 '12 at 21:35

2

Mabye is just the haskell98 wrapper around Data.Maybe. They are equivalent in almost all respects except that using Maybe requires you to jump through a number of hoops now since you can't use it together with base.
–
Daniel FischerMay 6 '12 at 21:35

The idea is that you use exactly one of haskell98, base, or haskell2010. The haskell* packages are the set of libraries mandated by the corresponding language standard, so if you use one of those you have a better chance of being compatible with non-GHC compilers. However, the vast majority of packages on Hackage use base anyway, so you're probably better off sticking with that.

Haskell98 strictly speaking predates hierarchical modules, so that's why they are all called Maybe and List and IO and so forth. (Actually, I think these are better names than what they are now, but that's another story). Your problem is that you were trying to use the old Maybe and the new System.IO at the same time, and neither the old nor the new package provides both.