Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GHCI can't load module if both package-conf and source path contains it

Tags:

haskell

ghci

I encounter a strange situation in GHCI, don't know if anyone observed similar case. For some module, when I have it in the search path both by -package-conf, and also by -i, GHCI fails when I try to import the module with 'module is not loaded: FooModule'.

  • :module loads it fine however
  • or I can do :load FooModule, :m to clear the import list, and then import FooModule
  • or I can remove the path from -i and then it imports fine

Tracked this to be the otherwise -> modNotLoadedError m loc case in GHC, where otherwise ~ modulePackageId = this_pkg (the meaning of which I don't know).

This is not entirely systematic, there are some module which are both in package and source path, but can be imported.

like image 481
ron Avatar asked Mar 28 '14 15:03

ron


1 Answers

GHC only knows about packages that are installed. To see which packages are installed, use the ghc-pkg list command:

$ ghc-pkg list /usr/lib/ghc-6.12.1/package.conf.d:     Cabal-1.7.4     array-0.2.0.1     base-3.0.3.0     base-4.2.0.0     bin-package-db-0.0.0.0     binary-0.5.0.1     bytestring-0.9.1.4     containers-0.2.0.1     directory-1.0.0.2     (dph-base-0.4.0)     (dph-par-0.4.0)     (dph-prim-interface-0.4.0)     (dph-prim-par-0.4.0)     (dph-prim-seq-0.4.0)     (dph-seq-0.4.0)     extensible-exceptions-0.1.1.0     ffi-1.0     filepath-1.1.0.1     (ghc-6.12.1)     ghc-prim-0.1.0.0     haskeline-0.6.2     haskell98-1.0.1.0     hpc-0.5.0.2     integer-gmp-0.1.0.0     mtl-1.1.0.2     old-locale-1.0.0.1     old-time-1.0.0.1     pretty-1.0.1.0     process-1.0.1.1     random-1.0.0.1     rts-1.0     syb-0.1.0.0     template-haskell-2.4.0.0     terminfo-0.3.1     time-1.1.4     unix-2.3.1.0     utf8-string-0.3.4 
like image 138
Sherwin Salubon Avatar answered Oct 13 '22 11:10

Sherwin Salubon