Question

I know a Haskell module name, but I can't figure out in what package it is defined. This is bad because I can't compile without a package exposing this module.

Specificaly it is Text.Regex that I can't locate, but I would like to know how to solve that problem in general.

Was it helpful?

Solution

http://www.haskell.org/ghc/docs/latest/html/users_guide/packages.html

ghc-pkg find-module Text.Regex

But that only works for (a) recent GHCs, and (b) packages installed on your system.

You can also grep through the package file (e.g. /usr/lib/ghc-6.8.2/package.conf) to see what's installed.

You can also use either the haskell API search engines hoogle or the hackage search engine hayoo.

Text.Regex is in the package regex-base, and a few others built on top of it.

OTHER TIPS

If you're using Cabal and you have the package installed, you can just try to compile it with cabal build, and Cabal will inform you of which package you forgot to add to your dependencies:

Main.hs:1:8:
    Could not find module `Text.Regex':
      It is a member of the hidden package `regex-compat-0.93.1'.
      Perhaps you need to add `regex-compat' to the build-depends in your .cabal file.
      Use -v to see a list of the files searched for.

The best tools are:

Both are search engines for Haskell modules and functions.

If you are using Debian and the Debian-provided packages, there is a global documentation index at /usr/share/doc/ghc-doc/html/libraries/index.html which lists the package in the last column.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top