By default, Hayoo! searches for function names, module names, signatures and function descriptions. With every letter typed, Hayoo! will show the results it thinks are best matching the query as well as some suggestions on how the words from the query could be completed. Clicking one of these suggestions will replace the according word in the query.
Hayoo! displays results as a list of functions, including full qualified module name and the function signature. Clicking the function name will lead directly to the corresponding documentation while clicking the module name will lead to the documentation of the module. Additionally, Hayoo! shows the function description (if available) and provides a link leading directly to the source of the function (if available). The description of the function can be expanded by clicking on the small '+' sign.
Along with the results, Hayoo! shows two lists on the right, containing the top fifteen root-modules and packages. These are aggregated from the actual results. Clicking on each of these will further restrict the current query to the respective module hierarchy or package. On the left side, package search results are shown if the query matches the package information.
If words are seperated by whitespace, Hayoo! will search for results containing both words. Instead of using whitespace, the explicit AND operator can be used. Hayoo! also supports OR and NOT operators, although the NOT operator may only be used together with AND, e.g. map NOT fold or map AND NOT fold. Operator precedence can be influenced using round parentheses. Phrases can be searched using double quotes, e.g. "this is a phrase".
It is possible to restrict a search to certain packages or modules. The most simple way would be to just include the package name in the search, e.g. map base will prefer hits from the base package. But the restriction can also be more explicit, like map package:base or like map module:data.list. It is also possible to specify several different modules or packages, like this: fold module:(data.list OR data.map). This will return all hits for fold in the module hierarchies below Data.List and Data.Map.
Hayoo! always performs fuzzy queries. This means, it tries to find something even if the query contains spelling errors. For example, Hayoo! will still find "fold" if "fodl" is being searched. If Hayoo! detects ">" in the query string, it will only search for signatures. A signature query may consist of explicit type names as well as type variables. For example, searching for "a > b" will find signatures like "Int > Bool".
Currently, Hayoo! searches all packages available on Hackage. Additionally, any Haskell documentation generated by Haddock can be included in Hayoo!. Just send a message including an URI where the documentation can be found to firstname.lastname@example.org.