
#10920: ghci can't load local Prelude module -------------------------------------+------------------------------------- Reporter: Yuras | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by gelisam): osa1, I am not that person, but here is an explanation. If you have a file called `./Foo.hs` and you try to import it, `ghci` tells you that it doesn't know about that file, because you haven't loaded it yet: {{{ $ ghci GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help Prelude> import Data.List <no location info>: Could not find module ‘Foo’ It is not a module in the current program, or in any known package. }}} The solution is to run `:load Foo.hs` before `import Foo`. If you have a file called `./Data/List.hs`, this now conflicts with the `Data.List` from `base`, so you get a different message clarifying which module is not loaded: {{{ $ ghci GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help Prelude> import Data.List <interactive>:1:1: attempting to use module ‘Data.List’ (./Data/List.hs) which is not loaded }}} The solution is to run `:load Data/List.hs` before `import Data.List`. Now without `-XNoImplicitPrelude`, `ghci` begins by running `import Prelude`, which normally succeeds by loading the Prelude from `base`, but in this case, since there is a `./Prelude.hs` file, `ghci` tells you that it can't use that file because it isn't loaded yet. Since the user didn't explicitly type `import Prelude`, the error message is confusing, so maybe there should be some special logic to give a different message in that case or even to implicitly `:load ./Prelude.hs`. Note, however, that there are other modules than Prelude which can trigger this error message when particular files are present and the user hasn't explicitly typed an import statement. If your `.ghci` has an `import Data.List` intended to import the `Data.List` from `base`, it will usually work, until you have a local file called `./Data/List.hs` in which case `ghci` will complain on startup with this same message that it can't use `./Data/List.hs` because it is not loaded. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10920#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler