It is a special search engine for Haskell libraries. For example, if I want the `map` function but don't know what it's called (or what library it's in) I can search for its type signature, which must be something like `[a] -> (a -> b) -> [b]`. Hoogle finds exactly what I'm looking for: https://www.haskell.org/hoogle/?hoogle=%5Ba%5D+-%3E+%28a+-%3...
Note that this is true even though I reversed the argument order. It does fuzzy-matching of some sort. It will also help if you know the name of the function, since it searches those, too.
It's an idea that comes from Smalltalk, where for the longest time they've had a way to search for object methods given an input and an output, and it would search which object method did that.
So you can give it "blah" and "Blah" and it would find the method "capitalize" for instance.
Hoogle is like that but for Haskell, and instead of giving inputs and outputs you give it a few types and it looks for them in the function signatures.