Artyom Shalkhakov ha scritto:
Hi Manlio,
Hi Artyom.
Note that it seems you have sent this message only to me;
I'm sending the reply to both you and the mailing list.
2009/1/14 Manlio Perillo <[email protected]>:
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)
I guess you're talking about first-class modules, the ones that
might be passed to functions as arguments, returned from functions
as a result, loaded at run-time, etc.
No, I was not going that far :).
I simply was proposing a method to keep imported definitions local to a
function.
By the way, here is a strange (for me) problem I hit, and made me think
about this extension.
Suppose a file foo.hs defines:
import Control.Monad
import System.Posix.Files as PF
isDirectory :: FilePath -> IO Bool
isDirectory path =
PF.isDirectory `liftM` PF.getFileStatus path
If I try to load the file from ghci I get:
Prelude> :l foo.hs
[1 of 1] Compiling Main ( foo.hs, interpreted )
Ok, modules loaded: Main.
*Main> isDirectory "/var"
<interactive>:1:0:
Ambiguous occurrence `isDirectory'
It could refer to either `Main.isDirectory', defined at foo.hs:6:0
or `PF.isDirectory', imported from
System.Posix.Files at foo.hs:2:0-30
> [...]
Manlio Perillo
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe