[Remove various web pages, the content is now on the wiki Neil Mitchell**20060817193519] { hunk ./web/about.htm 1 - - - - - - Hoogle - About - - - - - -

About

- -

Acknowledgements

- -

- The code is all © Neil Mitchell 2004-2005. The initial version was done in my own time, and further refinement and reimplementation was done as part of my PhD. Various people gave lots of useful ideas, including my supervisor Colin Runciman, and various members of the Plasma group. In addition the following people have also contributed some code: -

- - -

The Data

- -

- 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. -

- - - rmfile ./web/about.htm hunk ./web/academics.htm 1 - - - - - - Hoogle - Academics - - - - - -

Academics

- - -

Sponsorship

- -

- The main author is a PhD student supported by a studentship from the Engineering and Physical Sciences Research Council of the UK. -

- -

Related Work

- -

- 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, which is also related. Unfortunately the implementations that accompanied the earlier works were for functional languages that have since become less popular, and to my knowledge no existing functional programming language has a tool such as Hoogle. -

- -
    -
  1. Mikael Rittri, Using Types as Search Keys in Function Libraries. Proceedings of the fourth international conference on Functional programming languages and computer architecture: 174-183, June 1989. (http://portal.acm.org/citation.cfm?id=99384)
  2. - -
  3. Colin Runciman and Ian Toyn, Retrieving reusable software components by polymorphic type. Journal of Functional Programming 1 (2): 191-211, April 1991. (http://portal.acm.org/citation.cfm?id=99383)
  4. - -
  5. Roberto Di Cosmo. Isomorphisms of types: from lambda-calculus to information retrieval and language design. Birkhauser, 1995. ISBN-0-8176-3763-X (http://www.pps.jussieu.fr/~dicosmo/Publications/ISObook.html)
  6. -
- - - - rmfile ./web/academics.htm hunk ./web/developers.htm 1 - - - - - - Hoogle - Developers - - - - - -

Developers

- -

The License

- -

- This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. -

- The work is intended to be helpful, open and free. If the license doesn't meet your needs then talk to me. -

- -

Getting the Source

- -

- darcs get http://www.cs.york.ac.uk/fp/darcs/hoogle -

- -

The Documentation

- -

- Haddock generated documentation is available here. -

- -

Contributions

- -

- 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. Some projects could be easily embarked upon are profiling, writing test frameworks and new front ends. Contact me if you have thoughts on doing something to Hoogle. -

- A wiki with the current development status, including bugs and things todo is at http://www.haskell.org/hawiki/Hoogle. -

- - - - rmfile ./web/developers.htm hunk ./web/download.htm 1 - - - - - - Hoogle - Download - - - - - - - - -

Download

- -

- Various aspects of this project will be available for download, as well as for use online. In the future this section will contain links to the downloads, however currently they are changing rapidly, so if you want a copy email me, or get the source. -

- -

Firefox Plugin

- -

- A Firefox plugin by Mike Dodds is available, to install click here. -

- - - rmfile ./web/download.htm hunk ./web/help.htm 1 - - - - - - Hoogle - Help - - - - - -

Help

- -

Your first search

- -

- The Haskell API Search can search for either names, or types. For example, to find the standard map :: (a -> b) -> [a] -> [b] function you could search for: -

- map
- (a -> b) -> [a] -> [b]
- (a -> a) -> [a] -> [a]
- (Int -> Bool) -> [Int] -> [Bool]
- [a] -> (a -> b) -> [b]
-

- -

The results in order

- -

- The API search tries to find as many results as it can. For name searchs, an exact substring of the name must match (so ap would match map). For type searches, anything that will unify is returned. In addition, arguments can be reordered - i.e. [a] -> (a -> b) -> [b] will still match map. -

- Because lots of results may be returned, they are sorted in order of usefulness. Those which are closer to the asked for information are given higher priority, those which are further are given lower priority. -

- -

Further Information

- -

- After you have found the function, you can click on it to view details. The information comes from GHC's documentation. -

- - - - - - rmfile ./web/help.htm }