[Haskell-cafe] Hint's setImports usage

Michael Sloan mgsloan at gmail.com
Sat Dec 22 23:47:38 CET 2012


I've looked into the custom "Prelude.hs" approach, and it's a bit tricky,
but does work out:

https://gist.github.com/4361578

The interpreter needs to run in the same directory as your "Prelude.hs".
 However, if you try to run "ghci" in that directory, it will fail -
because it doesn't know that it needs to load your "Prelude.hs" instead of
the ordinary one.  (Seeing ghci fail in the presence of a "Prelude.hs" is
the only reason I thought that this might work - and it did!)

Hope that's helpful!

-Michael


On Thu, Dec 20, 2012 at 5:19 PM, Michael Sloan <mgsloan at gmail.com> wrote:

> Ahh, right!  Now that I think harder about it, as far as I know, there is
> no way to get Hint to load a module with an extra import.  If it doesn't
> hide the prelude, then one thing to try would be writing your own
> "./Prelude.hs" file.  I'd test this, but I'm not currently on a computer
> with GHC.
>
> If this module is in a package, then there's definitely no way to give it
> an extra import (it's already compiled).
>
> Hope that helps!
>
> -Michael
>
>
>
> On Thu, Dec 20, 2012 at 5:02 PM, Martin Hilbig <lists at mhilbig.de> wrote:
>
>> On 21.12.2012 01:23, Michael Sloan wrote:
>>
>>> Yeah, I've run into that too..
>>>
>>> It does seem like there ought to be a better way, but in order to get
>>> around that, I just define the imports (or generate) "MyPrelude.hs" in
>>> the current directory.
>>>
>>
>> what do you do with the file then? neither loadModules, setImports,
>> setTopLevelModules helped me :/
>>
>> have fun
>> martin
>>
>>  That file can just consist of "import
>>> OtherPackage.MyPrelude".
>>>
>>> -Michael
>>>
>>>
>>> On Thu, Dec 20, 2012 at 4:12 PM, Martin Hilbig <lists at mhilbig.de
>>> <mailto:lists at mhilbig.de>> wrote:
>>>
>>>     oh that's neat!
>>>
>>>     but what to do if MyPrelude is provided by some package?
>>>
>>>     i get this error:
>>>
>>>        module `MyPrelude' is a package module
>>>
>>>     and neither
>>>
>>>        set [languageExtensions := [PackageImports]]
>>>
>>>     nor
>>>
>>>        {-# LANGUAGE PackageImports #-}
>>>
>>>     helps.
>>>
>>>     have fun
>>>     martin
>>>
>>>
>>>     On 21.12.2012 00:55, Michael Sloan wrote:
>>>
>>>         Hello!
>>>
>>>         Try doing this first:
>>>
>>>             loadModules ["My.Module"]
>>>
>>>         You may also need to set the "searchPath" - it defaults to the
>>>         current
>>>         director.  Another good function to know about is
>>>         "setTopLevelModules",
>>>         which is just like using ":load" in ghci - it imports everything
>>>         in the
>>>         module, including its imports.  So, I often do:
>>>
>>>             loadModules ["MyPrelude"]
>>>             setTopLevelModules ["MyPrelude"]
>>>
>>>         And stick all of the things that I want to be in scope into
>>>         "MyPrelude.hs".
>>>
>>>         -Michael
>>>
>>>
>>>         On Thu, Dec 20, 2012 at 3:35 PM, Martin Hilbig <lists at mhilbig.de
>>>         <mailto:lists at mhilbig.de>
>>>         <mailto:lists at mhilbig.de <mailto:lists at mhilbig.de>>> wrote:
>>>
>>>              hi,
>>>
>>>              how to use Language.Haskell.Interpreter._**___setImports?
>>>
>>>
>>>
>>>              i use it like:
>>>
>>>                 setImports ["My.Module"]
>>>
>>>              so that my interpreted modules don't need to:
>>>
>>>                 import My.Module
>>>
>>>              But i still get:
>>>
>>>                 Not in scope: data constructor `MyType'
>>>
>>>              What am i doing wrong?
>>>
>>>              Thanks in advance.
>>>
>>>              have fun
>>>              martin
>>>
>>>              ______________________________**_____________________
>>>
>>>              Haskell-Cafe mailing list
>>>         Haskell-Cafe at haskell.org <mailto:Haskell-Cafe at haskell.**org<Haskell-Cafe at haskell.org>
>>> >
>>>         <mailto:Haskell-Cafe at haskell._**_org
>>>         <mailto:Haskell-Cafe at haskell.**org <Haskell-Cafe at haskell.org>>>
>>>         http://www.haskell.org/____**mailman/listinfo/haskell-cafe<http://www.haskell.org/____mailman/listinfo/haskell-cafe>
>>>         <http://www.haskell.org/__**mailman/listinfo/haskell-cafe<http://www.haskell.org/__mailman/listinfo/haskell-cafe>
>>> >
>>>              <http://www.haskell.org/__**mailman/listinfo/haskell-cafe<http://www.haskell.org/__mailman/listinfo/haskell-cafe>
>>>         <http://www.haskell.org/**mailman/listinfo/haskell-cafe<http://www.haskell.org/mailman/listinfo/haskell-cafe>
>>> >**>
>>>
>>>
>>>
>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20121222/be093003/attachment.htm>


More information about the Haskell-Cafe mailing list