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@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@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@mhilbig.de
<mailto:lists@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@mhilbig.de
        <mailto:lists@mhilbig.de>
        <mailto:lists@mhilbig.de <mailto:lists@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@haskell.org <mailto:Haskell-Cafe@haskell.org>
        <mailto:Haskell-Cafe@haskell.__org
        <mailto:Haskell-Cafe@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>>