Allow multiple modules per source file
This is helpful because the module system is the only way to achieve encapsulation in Haskell, so the system needs to be as lightweight and flexible as possible. It also makes it easier to share and distribute Haskell programs when it is most convenient to do so as a single file, such as literate Haskell via email.
To use this feature, one would specify files to be compiled explicitly. When GHC searches on its own for modules, it needs the path of the file to indicate the name of the module it contains, so multiple modules are not possible in that case.
See #2550, and the thread in: