You may know this already (and I suspect there are those in your audience who know as well), but this is how Python works, except that your 'hs' files are called '__init__.py' and they're generally required for every directory with Python modules in it (mostly you will find empty ones littered throughout Python projects).


No, I did not know this! But now that you mention it I am reminded of the magic files you can use to add package-level comments (but only those, no code) in java. It's interesting that there is more prior art like this. However now I am even more convinced that this topic is quite orthogonal to the original question.

Speaking of orthogonal issues:

For an extended example, if these were Python modules and you wrote:

"from bar.baz.internals import some_function"

The python interpreter would evaluate the top-level declarations within the __init__.py in each directory in order (1. bar, 2.baz) before finally importing from the internals module (at which point it would also execute all top-level declarations there as well.


That sounds like something that might be easy to add to Haskell via a syntax extension: whenever an import contains two dots in a row (or a dot and a question mark, or what have you), special handling like this could kick in from that point on downwards. Maybe require an explicit import list in this case? This is only the engineer in me speaking though, I very much suspect this to be a solution without a problem in our world. Neat thing to ponder though.

Cheers,
MarLinn