[Haskell-cafe] some ideas for Haskell', from Python
Manlio Perillo
manlio_perillo at libero.it
Thu Jan 15 05:53:07 EST 2009
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 <manlio_perillo at libero.it>:
>> 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
More information about the Haskell-Cafe
mailing list