hoogle alternatives and similar packages
Based on the "Development" category.
Alternatively, view hoogle alternatives based on common mentions on social networks and blogs.
Structured editing minor mode for Haskell in Emacs
9.8 5.6 hoogle VS criterionA powerful but simple library for measuring the performance of Haskell code.
9.8 7.9 hoogle VS cabal-install-parsersScripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations
9.7 4.3 hoogle VS inline-cWrite Haskell source files including C code inline. No FFI required.
9.7 7.7 hoogle VS gi-atkGenerate Haskell bindings for GObject-Introspection capable libraries
9.7 7.5 hoogle VS inline-javaHaskell/Java interop via inline Java code in Haskell modules.
9.7 8.4 hoogle VS haskell-lspHaskell library for the Microsoft Language Server Protocol
9.6 3.2 hoogle VS lambdabot-coreA friendly IRC bot and apprentice coder, written in Haskell.
Do you think we are missing an alternative of hoogle or a related project?
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. The online version can be found at https://hoogle.haskell.org/ and searches Stackage.
- Online version: https://hoogle.haskell.org/
- Hackage page: https://hackage.haskell.org/package/hoogle
- Source code: https://github.com/ndmitchell/hoogle
- Bug tracker: https://github.com/ndmitchell/hoogle/issues
Hoogle can be used in several ways:
- Online, with the web interface at https://hoogle.haskell.org/
- In IRC, using the Lambdabot plugin with
emacs, by means of
- [Installed locally](./docs/Install.md), with either a command line or in a browser
- [As a developer](./docs/API.md), through Haskell or JSON APIs.
Here are some example searches:
mapsearches as text, finding
con mapsearches for the text "map" and "con" finding
concatMap, but not
a -> asearches by type, finding
id :: a -> a
asearches for the text "a"
:: asearches for the type "a"
id :: a -> asearches for the text "id" and the type "a -> a"
mode +cmdargssearches only the "cmdargs" package
file -basesearches the Haskell Platform, excluding the "base" package
mode +platform +cmdargssearches both the Haskell Platform and the "cmdargs" package
count +missinghsearches 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 -Systemexcludes results from modules such as
fold +Data.Mapfinds results in the
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.
Command Line UI
There is a terminal/curses based UI available through
cabal install bhoogle.
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".
From the search bar: Go to the Hoogle website in Firefox and click on the
⋯ symbol at the right of the URL bar, and select the "Add Search Engine" option. Click the hoogle logo at the bottom of the completion dropdown when searching to perform a Hoogle search.
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".
The Source Code
$ git clone https://github.com/ndmitchell/hoogle.git
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 issue 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.
Hoogle work is licensed under the BSD-3-Clause license.
A lot of related work was done by Rittri  and Runciman  in the late 80's. Since then Di Cosmo  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.
- 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.
- Colin Runciman and Ian Toyn, Retrieving reusable software components by polymorphic type. Journal of Functional Programming 1 (2): 191-211, April 1991.
- Roberto Di Cosmo, Isomorphisms of types: from lambda-calculus to information retrieval and language design. Birkhauser, 1995. ISBN-0-8176-3763-X
I have given several presentations on type searching all available from my home page.
The folders in the repository, and their meaning are:
cbits - C implementation of the text search used by hoogle
docs - documention on hoogle
misc - scripts, logos, sample data, etc.
src - haskell source code
I was unaware of any similar tools before starting development, and no other tool has really influenced this tool (except the first on this list). Some related tools are:
- Google, the leader in online search
- Hayoo, similar to Hoogle, but with less focus on type search
- Krugle, search code, but no Haskell :(
- Cloogle, for the Clean language
All code is all © Neil Mitchell, 2004-present. The initial version was done over my summer holiday, and further work was done during my PhD. During Summer 2008 I was funded to full-time on Hoogle by Google Summer of Code with the haskell.org mentoring organisation. Since then I have been working on Hoogle in my spare time. Various people have given lots of useful ideas, including my PhD supervisor Colin Runciman, and various members of the Plasma group. In addition, the following people have also contributed code or significant debugging work:
- Thomas "Bob" Davie
- Don Stewart
- Thomas Jager
- Gaal Yahas
- Mike Dodds
- Niklas Broberg
- Esa Ilari Vuokko
- Udo Stenzel
- Henk-Jan van Tuyl
- Gwern Branwen
- Tillmann Rendel
- David Waern
- Ganesh Sittampalam
- Duncan Coutts
- Peter Collingbourne
- Andrea Vezzosi
- Ian Lynagh
- Alfredo Di Napoli
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.
*Note that all licence references and agreements mentioned in the hoogle README section above are relevant to that project's source code only.