Tuesday, August 05, 2008

Hoogle 4.0 web client preview

Since releasing a command line version of Hoogle 4 yesterday, I've had some useful feedback from a number of people. As a result, I have added a few bugs to the bug tracker, and fixed a few mistakes in the searching and ranking. The Hoogle on Hackage is currently 4.0.0.3 and is a recommended upgrade to all early testers.

I've now written a web interface to Hoogle 4, which has been uploaded to http://haskell.org/hoogle/beta/. This web interface is primarily so people can test searching/ranking without installing anything. There are a number of limitations:


  • The links to documentation do not work - this is the most severe problem, and probably stops people permanently changing to the new version.

  • The Haddock documentation is not present.

  • Some database entries are duplicates.

  • The Lambdabot says feature is missing.

  • The Suggestion feature is incomplete.

  • The AJAX style client features are not present.



The first three issues are fixed in Hoogle, but need various support through Haddock and Cabal to work. Other than these limitations, I am very interested in hearing what people think. As before, particularly regressions from Hoogle 3 or poor results/ranking.

8 comments:

Anonymous said...

Minor bug: searching for "Monad m => m a -> (a -> m b) -> m b" finds (=<<) before (>>=).

Neil Mitchell said...

Anon: Good catch, I'll fix that.

CS said...

Searching for foldl' doesn't show any foldl' function on the first page of results, and the URL for the "Show More Results" link at the bottom uses foldl in the query and not foldl'.

I like what I see so far. The coloring of of the type parts when you search for a type is very nice.

CS said...

Have you considered handling queries like "Prelude" or "Control.Monad" by showing the functions in that module as the result?

Sometimes I can't remember the name of a function but I remember the module it's in.

CS said...

Searching for (a -> b) -> [a] -> [b] gives results I expected and some that I didn't. For example, is Prelude.iterate :: (a -> a) -> a -> [a] supposed to be there?

Neil Mitchell said...

cs: re foldl', one query, two bugs - well done :-). Both fairly minor things, and I'll fix them soon.

re: modules, that will be done with the Haddock information, so coming soon.

re: iterate, its kind of close - bad answers are a fact of life, the question is if iterate is higher than anything else that seems more sensible?

Gleb said...

Very nice!

I've found an odd thing, not sure whether it's a bug in Hoogle or Haddock or whatever:
callCC's type is wrong in both Hoogle 3 and Hoogle 4. I tried to search for ((a -> m b) -> m a) -> m a, found nothing, and was surprised to see that both versions of Hoogle thought that callCC had the following type: MonadCont m => (a -> m b -> m a) -> m a.

Neil Mitchell said...

Gleb: Hmm, that is weird. Hoogle 4 is currently using the same database as Hoogle 3 was, although I have a new one in development. I'll check Hoogle 4 fixes this.