Maintainer's Corner

Readme for hoogle-5.0.16

Hoogle

The development branch for Hoogle version 5. The current released version lives on the hoogle4 branch. For details of the current state and future direction see this blog post.

This page describes how Hoogle 5 might work, and has not yet been fully implemented.

Hoogle is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature. To experiment, visit the online version at http://haskell.org/hoogle.

mode +platform +cmdargs searches both the Haskell Platform and the "cmdargs" package

count +missingh searches only the "MissingH" package - all packages are written in lower-case

With the set of packages you are searching, you can also restrict the set of modules searched:

file -System excludes results from modules such as System.IO, System.FilePath.Windows and Distribution.System

fold +Data.Map finds results in the Data.Map module

Integration

Command Line Version

To invoke Hoogle type:

hoogle "[a] -> [b]"

Note the quotes, otherwise you will redirect the output to the file [b].

To ensure you have data files for the Hackage modules, you will first need to
type:

hoogle generate

Which will download and build Hoogle databases.

Chrome Integration

As a keyword search: With a keyword search you can type h map directly into the location bar to perform a Hoogle search. Go to the Hoogle website in Chrome, right-click in the Hoogle search field and select "Add as a search engine...". Give it a keyword such as "h".

Firefox Integration

From the search bar: Go to the Hoogle website in Firefox and click on the drop-down arrow at the left of the search bar, and select the "Add Hoogle" option. Click the arrow again to select Hoogle as your search engine.

As a keyword search: With a keyword search you can type h map directly into the location bar to perform a Hoogle search. Go to the Hoogle website in Firefox, right-click in the Hoogle search field and select "Add a Keyword for this Search...". Given it a keyword such as "h".

If you want to search for special symbols in Firefox keyword search, modify the keyword search URL to be: javascript:window.location.href="http://haskell.org/hoogle?q=" + encodeURIComponent("%s")

Firefox Ubiquity Integration

Ubiquity provides a graphical command-line for Firefox. To install the Ubiquity Hoogle command, visit the this page and click "Subscribe..." when asked whether you want to install it. Further information is available here.

The Source Code

Contributions are most welcome. Hoogle is written in Haskell 98 + Heirarchical Modules, I do not wish to change this. Other than that, I'm pretty flexible about most aspects of Hoogle. The [http://code.google.com/p/ndmitchell/issues/list bug tracker] has many outstanding tasks, but please contact me if you have thoughts on doing something major to Hoogle, so I can give some advice.

Background

Hoogle work is licensed under the GPL version 2.0. Any patches are assumed to be dual licensed under the BSD license and the GPL, to allow re-licensing Hoogle under the BSD license in future, if that proves beneficial to the Haskell community. The work is intended to be helpful, open and free. If the license doesn't meet your needs then talk to me.

Theoretical Foundations

A lot of related work was done by Rittri [1] and Runciman [2] in the late 80's. Since then Di Cosmo [3] has produced a book on type isomorphisms. Unfortunately the implementations that accompanied the earlier works were for functional languages that have since become less popular.

In previous versions, all the data was taken from Zvon's Haskell Guide. Thanks to their open and friendly policy of allowing the data to be reused, this project became possible. More recent versions use the Hierarchical Libraries as distributed with GHC, and databases generated by Haddock.