2) In Python it is possible to import modules inside a function.
In Haskell something like:
joinPath' root name =
joinPath [root, name]
importing System.FilePath (joinPath)
In Python importing a module has totally different semantics from importing in Haskell.
I runs the initialization code for the module & makes the names in that module
available to you code. In Haskell modules are just namespace control, and you can always
refer to names imported through import X through the syntax X.name.
This means that the local import in Python solves two problems
1) making a name available locally.
2) running initialization code only when a specific function is called.
Neither of those makes any sense for Haskell as far as I can tell.
Immanuel