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

Reply via email to